首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Squeel进行嵌套查询?

如何使用Squeel进行嵌套查询?
EN

Stack Overflow用户
提问于 2015-01-16 09:24:34
回答 1查看 87关注 0票数 1

我想使用尖叫声构建一个查询生成器,下面是我所做的工作:

家长班:

代码语言:javascript
复制
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

儿童班:

代码语言:javascript
复制
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

最后我的决定是:

代码语言:javascript
复制
a = ModelFilters::Collection.new(user)
a.build(:__showable__)

实际上,我的问题是,我不知道Squeel如何为嵌套查询工作,我的实际错误是undefined local variable or method 'is_private' (很明显)。

是否有一种方法可以使用Squeel (或其他ActiveRecord查询生成器)构建类似的内容?

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 09:44:54

如果你这样做了呢

代码语言:javascript
复制
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
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27980735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档