【发布时间】:2014-07-01 15:47:42
【问题描述】:
我的 Rails 应用程序中有三个模型对象,User、Member、Team,其中Member 是我的联接表。一些成员对象可以是特定团队的管理员,因此在我的 Member 模型中,我有一个 admin bool 属性。在我的某些观点中,我想检查current_user 是否是任何特定团队的管理员。
我的相关团队模型如下所示:
has_many :members, after_add: :set_admin
has_many :users, through: :members
has_many :admins, -> { where("admin = 1") }, through: :members, source: :user
def set_admin
self.members.first.admin = true
end
我希望创建团队的用户成为管理员,因此我的 set_admin 方法。让我知道是否有更好的方法来做到这一点。
在我看来,我想做一些类似 (HAML) 的事情:
- if @team.admins.include?(current_user)
...
但这不起作用。我不太确定是不是因为 admin 属性没有设置。或者如果还有其他问题,我不确定 .include?(current_user) 是否有效。
知道我能做什么吗?
更新
这就是我创建用户和团队的方式。在我的UsersController 我有:
# GET /users/new
def new
@user = User.new
@team = @user.teams.build
end
在我的用户模型中,我有:
accepts_nested_attributes_for :teams
当用户注册时,我还会创建团队。
【问题讨论】:
-
是您的
Team还是您的User型号? -
哦,这是我的团队模型。
标签: ruby-on-rails ruby-on-rails-4 many-to-many jointable