繁体   English   中英

Rails 4:通过多对多关联返回的条件检查值集

[英]Rails 4: Conditional check set of values returned via many to many association

我的应用程序具有用户模型,角色模型和分配模型。 通过分配模型,用户和角色模型之间存在多对多的关系。 我想检查当前用户是否具有特定的role_id。 能做到这一点吗?

我的模型课如下

class User < ActiveRecord::Base
  has_many :assignments
  has_many :roles, :through => :assignments
end

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :assignments
  has_many :users, :through => :assignments
end

您可以使用#role_ids方法访问用户的角色ID。 它将返回一个id数组,例如

user = User.first
user.role_ids

鉴于此,您可以轻松检查数组中是否存在id,例如

user.role_ids.include?(1)

另外,查看使用has_many关联时获得的其他方法的rails指南。

current_user.role_ids.include?(role_id)

通过询问has_many:through关联的[association_name] _ids来使用它

    User.first.role_ids.include? particular_role_id

会生成如下的SQL:

    SELECT `roles`.id FROM `roles` INNER JOIN `assignments_roles` ON `roles`.`id` = `assignments_roles`.`role_id` WHERE `assignments_roles`.`user_id` = 1

请阅读API doc @ APIdoc ActiveRecord :: Associations :: ClassMethods#has_many了解详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM