以下类彼此关联(第一个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)
队长和所有者是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,所有工作均会进行。我很困惑,已经搜寻了但找不到任何东西。
谢谢。
最佳答案
u.teams
指的是Team
实例。使用此命令,您正在构建Team
实例,因此不会识别船长和所有者是不奇怪的,因为它们是TeamUser
的属性而不是用户。
您应该分两个步骤进行操作:
team = Team.create
team_user = u.team_users.build(:team_id => team.id)
当然,如果您在
team_user
上遇到验证错误,则可能要根据应用程序破坏您的团队。