0
請考慮類產品的兩個對象:轉換貨幣的屬性,使用金錢的寶石update_attributes方法
class Product < ActiveRecord::Base {
:id => :integer,
:name => :string,
:total_stock => :integer,
:cents_retail_sale_amount => :integer,
:cents_cost_amount => :integer,
:created_at => :datetime,
:updated_at => :datetime
}
比方說,我有2個對象:
a{
:id => 12,
:name => "Shirt",
:total_stock => 1,
:cents_retail_sale_amount => 2500,
:cents_cost_amount => 2100,
:created_at => Mon, 23 Jul 2012 16:16:33 CDT -05:00,
:updated_at => Mon, 23 Jul 2012 17:24:15 CDT -05:00}
b {
:id => nil,
:name => "Polo Shirt",
:total_stock => 1,
:cents_retail_sale_amount => 2500,
:cents_cost_amount => 2100,
:created_at => Mon, 23 Jul 2012 16:16:33 CDT -05:00,
:updated_at => Mon, 23 Jul 2012 17:24:15 CDT -05:00}
現在,這裏就是我想做:
a.update_attributes(b.to_product.attributes.except("id", "created_at", "updated_at")
然而,問題(我只捕獲的原因,我有一個驗證的仙區 - 到只允許金額在0到$ 100(10000美分)之間),這是 - 我的美分領域也得到更新,並在最後得到額外的00 - 所以我得到$ 2500 & 2100美元的零售和成本金額。雖然真的很好的利潤率 - 不太現實。
在更新屬性(例如不更新貨幣字段並逐個單獨執行)之前,我明顯可以對b對象進行某種處理,但這並不十分有效。所以我想知道如果我做錯了
感謝