基于关系创建范围
我正在使用 Rails 3.0.4 和 Ruby 1.9.2
我正在尝试创建一个名为 role 的作用域,它接受角色字符串并返回所有具有 role
User 记录code> 作为他们的角色之一。
问题是 User
和 Role
有 HABTM 关系,我真的不知道如何在常规 User.where()声明。
这就是我的想法:(
scope :role, lamda {|role| where {|user| user.role? role} }
角色?是我编写的一种方法,仅检查用户是否属于该角色)
有没有办法从哪里传递这样的用户对象?或者完成同样的事情的东西?
谢谢。
I'm using Rails 3.0.4 and Ruby 1.9.2
I'm trying to create a scope called role which takes a role string and returns all of the User
records that have role
as one of their roles.
The problem is User
and Role
have a HABTM relationship, and I don't really know how to access this information in a regular User.where()
statement.
This is what I'm thinking:
scope :role, lamda {|role| where {|user| user.role? role} }
(role? is a method I wrote that just checks if a user belongs to that role)
Is there a way to pass the user object like that from where? Or something that accomplishes the same thing?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果角色只是用户模型中的一个字段:
如果角色是一个单独的模型并且
User own_to :role
。另外,角色有标题字段:UPD 1
如果
User has_many :roles
,您应该使用用户模型方法:=> User.with_role("Member")
或使用范围:
If role is just a field in user model:
If role is a separate model and
User belongs_to :role
. Also Role has got title field:UPD 1
If
User has_many :roles
you should use User model method:=> User.with_role("Member")
or using scope: