2012-05-23 152 views
0

我使用的是rails 3.2.3,並且無法在我的HABTM關係中分配一個值。Ruby on Rails - HABTM在創建後分配

基本上我有2個模型,產品和用戶。 當我創建新產品時,我想在Products_Users中間表中插入插入的值。

它必須是未來的HABTM,我希望能夠說「用戶x也可以編輯該產品」,而不僅僅是產品的原創者。

我的模型:(爲了簡化省略其他關係)

product.rb 
class Product < ActiveRecord::Base 
has_and_belongs_to_many :users 
accepts_nested_attributes_for :users 

attr_accessible <product attributes>, :user_ids, :user_id #it says cant mass assign user_ids so I also added the :user_id, but then it says unknown attribute :user_id 
end 

user.rb 

class User < ActiveRecord::Base 
has_and_belongs_to_many :products 
attr_accessible :user_id <plus the user attributes> 
end 

我的產品控制器具有從腳手架默認的操作和代碼。

問題也可能在於我的觀點。我也有一個產品和類別之間的HABTM關係,並且一切都很好(我選擇複選框列表中的類別)

但是,如何在用戶創建新產品後在Products_Users表中插入新行?

我試着在我看來形式後使用:

<%= f.hidden_​​field:PRODUCT_ID,:值=> PARAMS [:ID]%> #What放到這裏如果產品ISN」通過創建?

<%= f.hidden_​​field:user_id,:value => current_user.id%>#這個「current_user.id」適用於其他視圖。

這不工作,也沒有什麼意義,是否有可能實現我想要做的?

感謝您的幫助

+1

我不能幫你,但請**永遠不要**將當前用戶放到表單域中。從客戶端劫持非常容易。 – iltempo

+0

Humm我看到了...但我怎麼知道哪個用戶正在創建產品? :/ – Silver

+0

在將表單發送到之後的控制器操作中明確設置它。 – iltempo

回答

4

我刪除了hidden fields,並將此之後保存:

user=current_user 
@product.users << user 

希望它可以幫助別人。

Regards