2011-12-22 12 views
0

ゲストは他のゲストからアイテムを購入するため、アイテムには購入者と売り手があり、ゲストには購入したアイテムと購入したアイテムがあります。accepts_nested_attributes_forと同じテーブルとの2つの関係

class Guest < ActiveRecord::Base 

    has_many :bought_items, class_name: 'Item', foreign_key: 'buyer_id' 
    has_many :sold_items, class_name: 'Item', foreign_key: 'seller_id' 

    accepts_nested_attributes_for :bought_items, :reject_if => lambda { |a| a[:price].blank? } , :allow_destroy => true 
    accepts_nested_attributes_for :sold_items, :reject_if => lambda { |a| a[:price].blank? } , :allow_destroy => true 
end 

class Item < ActiveRecord::Base 

    belongs_to :seller, class_name: 'Guest', foreign_key: 'seller_id', inverse_of: :bought_items 
    belongs_to :buyer, class_name: 'Guest', foreign_key: 'buyer_id', inverse_of: :sold_items 

    attr_accessor :buyer_id, :seller_id 

end 

フォームがために、(私は今のところ購入をコード化しました)バック正しくPOSTデータを送信して表示されます。

アップデートがために起こる
Parameters: {"utf8"=>"✓", "authenticity_token"=>"9gR+GZfhT4CffM3ML9LkZaYK+eA85a1oLRG+NRqoRnY=", 
"guest"=>{ 
    "guest_number"=>"3", 
    "bought_items_attributes"=>{ 
     "0"=>{ 
      "item_number"=>"432", 
      "description"=>"test", 
      "seller_id"=>"27", 
      "sales_price"=>"10.0", "id"=>"1"}, 
     "1"=>{ 
      "item_number"=>"", 
      "description"=>"", 
      "seller_id"=>"27", 
      "sales_price"=>"0.0"} 
     } 
    }, 
"commit"=>"Save Changes", 
"id"=>"28"} 

guest_numberは変更されますが、ネストされた属性は変更されません。モデルの設定に何か問題はありますか?

これはRails 3.1です。

答えて

1

あなたのreject_ifブロックは、price属性が空白の場合、データを拒否するように指定しています。あなたの投稿データはsales_priceです。

また、lucapetteが指摘しているようにattr_accessorを取り除きたいこともあります。

+0

ああ。それは確かに問題です。私は*時間*を見てきました!一言...ありがとうございました。 – Brenda

0

attr_accessorは問題ありません。たぶんあなたはattr_accessibleを使用したでしょう。

+0

ご回答いただきありがとうございます。私はattr_accessorを試してみましたが、問題はまだ発生しています。 – Brenda

関連する問題