【发布时间】:2014-04-19 19:51:57
【问题描述】:
我有一个包含三个模型的数据模型,Team 有很多 Users 到 Members(连接表)。我的 Member 模型有一个 admin 布尔列。当用户创建一个新团队(注册)时,我想将该User 的admin 字段设置为true。我不确定这样做的最佳方法是什么。我尝试了以下方法:
# Team.rb (model for team)
[...]
after_save :set_admin
private
def set_admin
self.members.first.admin = true
end
这会导致零指针错误(self.members.first == nil)。
那么,什么是正确的 Rails 方法来做我想做的事? (当用户创建一个新团队时,也让该用户成为该团队的管理员。)
更新
我的模型关联如下所示:
# Team.rb
has_many :members
has_many :users, through: :members
# Member.rb
belongs_to :user
belongs_to :team
# User.rb
has_many :members
has_many :teams, through: :members
【问题讨论】:
-
粘贴您的会员和用户型号代码。
-
我已经添加了相关的模型代码(我的关联)。
标签: ruby-on-rails ruby activerecord ruby-on-rails-4 has-many-through