我想使用尖叫声构建一个查询生成器,下面是我所做的工作:
家长班:
module ModelFilters
class Base
def initialize(user)
@user = user
end
def build(method_name)
head.where { my { send(method_name) } }
end
protected
def head
end
end
end儿童班:
module ModelFilters
class Collection < Base
def __showable__
not_private | author
end
protected
def head
::Collection.joins(:collaborators)
end
private
def not_private
is_private == false
end
def author
user_id == @user.id
end
end
end最后我的决定是:
a = ModelFilters::Collection.new(user)
a.build(:__showable__)实际上,我的问题是,我不知道Squeel如何为嵌套查询工作,我的实际错误是undefined local variable or method 'is_private' (很明显)。
是否有一种方法可以使用Squeel (或其他ActiveRecord查询生成器)构建类似的内容?
谢谢大家!
发布于 2015-01-16 09:44:54
如果你这样做了呢
module ModelFilters
class Base
def initialize(user)
@user = user
end
def build(method_name)
head.where { |q| send(method_name, q) }
end
protected
def head
end
end
end
module ModelFilters
class Collection < Base
def __showable__(q)
not_private(q) | author(q)
end
protected
def head
::Collection.joins(:collaborators)
end
private
def not_private(q)
q.is_private == false
end
def author(q)
q.user_id == @user.id
end
end
endhttps://stackoverflow.com/questions/27980735
复制相似问题