2013-02-20 3 views
2

Мне нужен Arel, чтобы сделать несколько вещей, которые невозможно с помощью ActiveRecord, но мой метод должен вернуть область действия, поскольку вызывающие абоненты могут захотеть добавить несколько собственных областей.Можете ли вы превратить таблицу Arel в область видимости?

Возможно ли это?

например. User.arel_table.scoped.first

+0

было бы проще помочь вам, если бы вы объяснили, чего именно вы пытаетесь достичь. Isl_table - это совсем другой зверь из области видимости, это просто синтаксический узел, предназначенный для создания запросов sql. Некоторые запросы просто не имеют смысла/не соответствуют требованиям для построения фактического отношения. –

+0

В принципе, могу ли я использовать превосходный синтаксис Arel для сужения заданной области. Это кажется невозможным, но, возможно, я что-то пропускаю. –

+0

, чтобы быть уверенным, знаете ли вы, что вы можете использовать инструкции isl в 'Relation # where'? например 'Model.where (Model.arel_table [: column] .not_eq (nil) .or (Model.arel_table [: other_column] .gt (0)))' –

ответ

4

вы можете использовать операторы AREL в Relation#where

Например:

Model.where(Model.arel_table[:column].not_eq(nil) 
       .or(Model.arel_table[:other_column].gt(0))) 

есть хороший ASCIIcast об этом (Арел в конце). Кроме того, вас может заинтересовать squeel.