:team_users end cl-6ren">
gpt4 book ai didi

ruby-on-rails - 多对多通过 Rails 应用程序中的关联构建/创建属性

转载 作者:行者123 更新时间:2023-12-02 05:07:37 24 4
gpt4 key购买 nike

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

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>'

附带说明一下,如果我获得用户,创建团队,然后创建团队用户,一切正常。我很困惑并进行了搜索,但找不到任何东西。

谢谢。

最佳答案

u.teams指的是Team实例。使用此命令,您正在构建 Team 实例,因此无法识别队长和所有者也就不足为奇了,因为它们是 TeamUser 而不是用户的属性。您应该分两步执行此操作:

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

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

关于ruby-on-rails - 多对多通过 Rails 应用程序中的关联构建/创建属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com