在Ruby on Rails中指定关系的条件

时间:2011-05-26 08:20:21

标签: ruby-on-rails join conditional-statements relationships

我有以下

has_many :administrators, :class_name => "User", :conditions => "role_id = 4"

它工作正常,但不使用外键

"role_id = 4"

我更愿意在角色表中指定实际的角色字符串,即外键与之相关,例如“Admin”

更新:

SELECT *
FROM users u, roles r
WHERE u.role_id = r.id
AND r.role = "Admin"

更新2

我不能做这样的事情:(这不起作用,但说明了我要做的事情)

has_many :administrators, :class_name => "User", :conditions => { :role => {:name => "Admin"}}

2 个答案:

答案 0 :(得分:2)

想出来:

has_many :administrators, :class_name => "User", :conditions => {:roles => {:name => "Admin"}}, :include => :role

答案 1 :(得分:0)

尝试

怎么样?
has_many :administrators, :class_name => "User", :conditions => "role_id = #{Role.find(:name => 'Admin')}" 

假设角色表具有相应的模型。您使用的是特定框架或家庭烘焙授权吗?