通过在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错误,您可能希望根据您的应用程序销毁您的团队。