1
我有這樣一個模型:創建或遞增Mongoid場與軌道4
class Invoice
include Mongoid::Document
field :local, type: String
field :date, type: DateTime
field :total, type: Float
end
class LogInvoice
include Mongoid::Document
field :date, type: Date
field :local, type: String
field :summary, type: Hash
end
現場總結是這樣的一個Hash:
summary = {invoices : 0, amount : 0.0}
對於存儲,我必須每一張發票在LogInvoice.summary [:金額]中創建LogInvoice.summary [:invoices]中的發票總數(發票計數)和金額總額(Sumit of Invoice.total)的那一天的LogInvoice
如果In聲音存在,我必須更新當天的LogInvoice。
我不知道是否因爲LogInvoice.find()返回一個異常,如果它沒有,所以如何更新現有對象LogInvoice或創建它,如果它不?
謝謝
它不工作。第一種方式(原子持久性)拋出未定義的方法'total',第二種方式拋出'nil:NilClass'的'undefined method'[]'。我必須先創建一個哈希?但它會自動增加嗎?注意:感謝find_or_create_by解決方案 – jhrs21
準備就緒!我添加了兩個小改動。首先,我添加到我的模型字段中:summary,type:Hash,:default => {}'第二個,我必須以醜陋的方式自動增加,如下所示:'a = a.to_i + 1',因爲我收到**(未定義的方法'+'爲零:NilClass)**。因爲無論如何 – jhrs21
您的默認散列可能是 :default => {:invoices => 0,:amount => 0} 因此您將避免進一步的「未定義的方法__ for nil:NilClass」 –