2017-03-01 12 views
0

を通じて、私はそれがこのような何かを達成することが可能かどうかを知りたい:それはそうそこに(しかし、事実上、更新コスト属性と、製品を返しますProduct.last(cost: 100)レール:事実上のレコードの呼び出しで属性を更新:テーブル

データベースに変更はありません)。

これはシナリオです。誰かが私にしようとしているよりエレガントな方法を教えてくれるかもしれません。OrderLineItemProductという3つのモデルがあります。 LineItem belongs_to OrderおよびOrde​​r has_many LineItemsです。 LineItemは多相です。 LineItemsを介してhas_many製品を注文します(ただし、ProductはLineItemまたはOrderに属しません)。 Order.products < < Product.firstは私が予想したとおりに動作します。広告申込情報には商品が割り当てられ、注文は正しく保存されます。ただし、オーダの各明細には、原則として製品の原価を継承する原価属性があります。私はLineItemのコスト属性をProduct上で変更することなく変更したいとします。つまり、Productは価格を調整する一時的な割引をしています。私はこれについて最善の方法で行きますか?

答えて

1

私はあなたの質問を理解し、しかし、あなたは、あなたがオブジェクトを取得し、ローカルにその属性の値の1を変更するには、この操作を行うことができわからない:

@product = 
     Product.last.tap do |product| 
     product.cost = 100 
     product.readonly! # to ensure you won't persist this change 
     end 
関連する問題