Как вы оцениваете ассоциации ActiveRecord в Rails 3?

У меня есть проект Rails 3. С Rails 3 появилась Arel и возможность повторно использовать одну область для создания другой. Мне интересно, есть ли способ использовать области при определении отношений (например, "has_many").

У меня есть записи, которые имеют столбцы разрешений. Я хотел бы создать default_scope, который учитывает мои столбцы разрешений, так что записи (даже те, к которым осуществляется доступ через отношения) фильтруются.

В настоящее время в Rails 3 default_scope (включая найденные мной исправления) не обеспечивают работоспособного способа передачи proc (который мне нужен для позднего связывания переменных). Можно ли определить has_many, в который можно передать именованную область?

Идея повторного использования именованной области видимости будет выглядеть так:

Orders.scope :my_orders, lambda{where(:user_id => User.current_user.id)}
has_many :orders, :scope => Orders.my_orders

Или неявное кодирование этой именованной области во взаимосвязи будет выглядеть так:

has_many :orders, :scope => lambda{where(:user_id => User.current_user.id)}

Я просто пытаюсь применить default_scope с поздним связыванием. Я бы предпочел использовать подход Arel (если он есть), но использовал бы любой работоспособный вариант.

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

has_many :orders, :conditions => ["user_id = ?", User.current_user.id]

Ответы на вопрос(6)

Ваш ответ на вопрос