Указание условий для отношений в Ruby on Rails - PullRequest
2 голосов
/ 26 мая 2011

У меня есть следующее

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

и работает нормально, но вместо использования внешнего ключа

"role_id = 4"

Я бы предпочел указать фактическую строку роли в таблице ролей, к которой относится этот внешний ключ, например "Admin"

UPDATE:

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 ]

2 голосов
/ 26 мая 2011

Разобрался:

has_many :administrators, :class_name => "User", :conditions => {:roles => {:name => "Admin"}}, :include => :role
0 голосов
/ 26 мая 2011

как насчет попытки

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

Предполагая, что у таблицы ролей была соответствующая модель. Вы используете конкретную платформу или авторизацию, запеченную дома?

...