5
在向連接表中添加屬性時,如何在has_many:through關聯中使用ActiveRecord的accept_nested_attributes_for幫助器?accep_nested_attributes_for通過連接表加入屬性
例如,假設我有一個團隊模式:
class Team < ActiveRecord::Base
role = Role.find_by_name('player')
has_many :players,
:through => :interactions,
:source => :user,
:conditions => ["interactions.role_id = ?", role.id] do
class_eval do
define_method("<<") do |r|
Interaction.send(:with_scope, :create => {:role_id => role.id}) { self.concat r }
end
end
end
end
隊的has_many players
通過interactions
,因爲用戶可以佔據幾個角色(運動員,經理等)。
如何在使用accept_nested_attributes_for的同時向連接表添加屬性?
如果我有一個現有的球隊戰績team
和現有的用戶記錄user
,我可以做這樣的事情:
team.players << user
team.players.size
=> 1
但是,如果我創建一個新的團隊,嵌套播放器:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
在最後一個例子中,創建了團隊,用戶和交互記錄(並且團隊確實通過交互使用戶),但這裏不設置interact.role_id屬性。
您是否曾經解決過這個問題? – 2011-09-02 05:57:38
您的問題的答案可以在這篇文章中找到:http://stackoverflow.com/questions/2182428/rails-nested-form-with-has-many-through-how-to-edit-attributes-of-join -模型 – 2011-10-06 20:57:52