通过在Rails应用程序中建立/创建属性的多对多

以下类相互关联(没有教程的第一个rails应用程序):

class Team  "TeamUser" has_many :users, :through => :team_users end class TeamUser < ActiveRecord::Base belongs_to :user belongs_to :team end class User  "TeamUser" has_many :teams, :through => :team_users end 

如果我有用户属性,则在尝试执行以下操作时:

 u.teams.build(:name => "catsteam", :captain => true, :owner => :true) 

Captain和Owner是TeamUser类的属性。 执行命令我得到以下内容:

 u.teams.build(:name => "catsteam", :captain => true, :owner => :true) ActiveRecord::UnknownAttributeError: unknown attribute: captain ... from -e:1:in `load' from -e:1:in `' 

如果我得到用户,请注意创建团队,然后创建teamuser所有工作。 我很困惑,已经搜索但找不到任何东西。

谢谢。

u.teams是指Team实例。 使用此命令可以构建Team实例,因此不会识别队长和所有者,因为它们是TeamUser属性而不是用户的属性。 你应该分2步完成:

 team = Team.create team_user = u.team_users.build(:team_id => team.id) 

当然,如果您在team_user上遇到validation错误,您可能希望根据您的应用程序销毁您的团队。