以下类彼此关联(第一个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上遇到验证错误,则可能要根据应用程序破坏您的团队。

10-07 18:04