以下类相互关联(没有教程的第一个rails应用程序):
class Team < ActiveRecord::Base
has_many :team_users, :class_name => "TeamUser"
has_many :users, :through => :team_users
end
class TeamUser < ActiveRecord::Base
belongs_to :user
belongs_to :team
end
class User < ActiveRecord::Base
has_many :team_users, :class_name => "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 `<main>'
如果我收到用户,请创建团队,然后创建teamuser all works。我很困惑,已经搜索过但找不到任何东西。
感谢。
答案 0 :(得分:0)
u.teams
指的是Team
个实例。使用此命令可以构建Team
个实例,因此不会识别机长和所有者是因为它们是TeamUser
而非用户的属性。
您应该分两步完成:
team = Team.create
team_user = u.team_users.build(:team_id => team.id)
当然,如果您在team_user
上遇到验证错误,则可能需要根据您的应用程序销毁您的团队。