【问题标题】:Rails search using Arel使用 Arel 进行 Rails 搜索
【发布时间】:2012-12-17 19:53:15
【问题描述】:

伙计们,我正在尝试查找业务列等于 false 的所有用户。业务列在另一个模型中,所以我有2个模型用户模型和信息模型。我正在尝试使用 Arel 创建自己的搜索。这是我的用户模型上的方法:

def self.search
        users = self.arel_table

        information = Information.arel_table

        users.
            join(information).on(users[:id].eq(information[:user_id])).
            where(information[:business].eq(false))
end

我没有看到错误,但我收到了这个错误:

NoMethodError in Users#index

Showing
/Users/jeanosorio/rails_projects/rutalaboral/app/views/users/index.html.erb
where line #1 raised:

undefined method `each' for `#<Arel::SelectManager:0x007ffcff1c2e20>`

这是我在用户控制器中的操作

def index
   @users = User.search()
end

提前感谢您的帮助

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2


    【解决方案1】:

    您是否有任何理由尝试使用 Arel 而不是 ActiveRecord?在 ActiveRecord 中,您将执行以下操作:

    User.joins(:information).where(Information.arel_table[:business].eq(false))
    

    【讨论】:

    • 谢谢 Sean,原因是我不知道如何在 ActiveRecord 中执行此操作,一位朋友告诉我必须使用 arel :S
    • 啊,明白了。不,您绝对应该能够为此使用 ActiveRecord。通常,您可以使用 ActiveRecord 完成大部分操作,然后下拉到 Arel 进行更复杂的查询。
    • 知道了,...我将尝试阅读有关如何使用 ActiveRecord 执行此操作的更多信息。再次感谢
    猜你喜欢
    • 2014-02-05
    • 2010-11-11
    • 2021-12-15
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多