通常,當我添加一個新產品的@announcement,我做的:什麼是update_attributes的等價物?
@announcement = Announcement.find(params[:id])
@announcement.products << Product.find_all_by_id(params[:announcement_products])
什麼做@announcement.products << Product.find_all_by_id(params[:announcement_products])
爲update_attributes()
相當於?
作爲參考,我的模型的定義是這樣的:
模型
class Product < ActiveRecord::Base
has_many :announcement_products
has_many :announcements, :through => :announcement_products
accepts_nested_attributes_for :announcements#, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
class Announcement < ActiveRecord::Base
has_many :announcement_products
has_many :products, :through => :announcement_products
accepts_nested_attributes_for :products#, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
class AnnouncementProduct < ActiveRecord::Base
belongs_to :announcement
belongs_to :product
end
我不確定你想要完成什麼。在你的例子中,你正在分配has_many關係,但你的問題似乎是關於更新關係的屬性。你能更好地描述投入和預期結果嗎? – Chap
基本上,一個公告可以有許多產品。可以說我有3種產品,Announcement.first有分配給它的前兩種產品。我希望能夠在Announcement.first中添加第三個產品。這就是我想要做的 –
假設你想更新公告中附加的產品集,將會@@announcement.products = Product.find_all_by_id(params [:announcement_products])'不要這麼做嗎?我錯過了什麼? –