Como você escopo associações ActiveRecord no Rails 3?

Eu tenho um projeto do Rails 3. Com o Rails 3, surgiu a Arel e a capacidade de reutilizar um escopo para criar outro. Gostaria de saber se existe uma maneira de usar escopos ao definir um relacionamento (por exemplo, um "has_many").

Eu tenho registros que possuem colunas de permissão. Gostaria de criar um default_scope que leve em consideração minhas colunas de permissão para que os registros (mesmo aqueles acessados por meio de um relacionamento) sejam filtrados.

Atualmente, no Rails 3, o default_scope (incluindo os patches que eu encontrei) não fornece um meio viável de passar um proc (necessário para a ligação tardia de variáveis). É possível definir um has_many no qual um escopo nomeado pode ser passado?

A idéia de reutilizar um escopo nomeado se pareceria com:

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

Ou a codificação implícita desse escopo nomeado no relacionamento seria semelhante a:

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

Estou simplesmente tentando aplicar o default_scope com ligação tardia. Eu preferiria usar uma abordagem Arel (se houver), mas usaria qualquer opção viável.

Como estou me referindo ao usuário atual, não posso confiar em condições que não foram avaliadas no último momento possível, como:

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

questionAnswers(6)

yourAnswerToTheQuestion