Я использую Ruby on Rails 3.2.2, и я экспериментирую с камнем Squeel. Я хотел бы знать, если (каким-то образом, используя камень Squeel или нет), можно «добавить» предложения SQL, связанные с методом scope
«непосредственно» в предложении where
. То есть, у меня есть:Можно ли «добавить» предложения SQL, связанные с методом `scope`, в` where` method/clause?
class Article < ActiveRecord::Base
# Note: This is a scope method.
def self.created_by(user)
where(:user_id => user.id)
end
# I would like to use a scope method like the following.
#
# Note: Code in the following method doesn't work, but it should help
# understanding what I mean.
def self.scope_method_name(user)
where{ created_by(user) | ... & ... }
end
end
Так что, когда я бегу Article.scope_method_name(@current_user).to_sql
тогда он должен вернуть что-то вроде следующего:
SELECT articles.* FROM articles WHERE articles.user_id = 1 OR ... AND ...
I судимое sifters но те (по крайней мере для меня) предназначены для исключительно в других заявлениях Squeel. То есть, если я укажу фильтр, то я не могу использовать его для области ActiveRecord
, потому что этот фильтр возвращает объект Squeel::Nodes::Predicate
вместо ActiveRecord::Relation
.