[英]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.