2012-08-28 51 views
0

在我的應用中,產品has_many的意見,這是由許多客戶端寫的。下面是型號協會:Rails:屬於另外兩個模型的新條目

class Product < ActiveRecord::Base 
    attr_accessible :name, :desc, :price 

    has_many :opinions 
end 

class Client < ActiveRecord::Base 
    attr_accessible :name, :bio 

    has_many :opinions 
end 

class Opinion < ActiveRecord::Base 
    attr_accessible :rate, :comment 

    belongs_to :client, :product 
end 

在參數,我有評價邀請ID,這有助於我獲得兩個PRODUCT_ID和CLIENT_ID(所以考慮我有他們兩個)。

表格只包含比率(radio_button,從1到5)和評論(text_field)。

如何方法的意見#創建創建新的意見,這屬於兩種模式:客戶端和產品?

我試圖通過直接CLIENT_ID和PRODUCT_ID,但我得到MassAssignment錯誤:

# Remember: I have product_id and client_id 
product = Product.find_by_id product_id 

opinion = product.opinions.build params[:opinion] 
opinion.product_id = product_id 
opinion.client_id = client_id 

opinion.save 

以防萬一它是有用的:在我的應用程序的第一個版本,認爲只屬於產品,該工程,並使用上面的代碼(刪除opinion.client_id = client_id線),這就是爲什麼我用product建設的意見)很好。所以,這只是一個增強。

有什麼想法?提前致謝。

+0

你能發佈錯誤信息嗎? (我知道這是一個大規模的任務)。只需要檢查消息。 – MurifoX

回答

1

product.opinions.build params[:opinion]將構建一個已經擁有了一套PRODUCT_ID到的product.id新的意見。它知道要這樣做是因爲協會belongs_to :product。但是,它還不知道它屬於哪個客戶端,因此您必須手動設置它。但是您需要將attr_accessible:client_id添加到Opinion來執行此操作。

相關問題