【问题标题】:How to use the 'where' method from 'ActiveRecord::QueryMethods' in order to limit searching?如何使用“ActiveRecord::QueryMethods”中的“where”方法来限制搜索?
【发布时间】:2011-07-13 04:22:33
【问题描述】:

我正在使用 Ruby on Rails 3,我想使用以下内容限制 where 方法从 ActiveRecord::QueryMethods 中的搜索

Users.where(:name => "Test_name", :limit => 10)
Users.where(:name => "Test_name").limit(10)

也就是说,我只想查询 10 条记录。我该怎么做?


在RoR源代码中有:

def where(opts, *rest)
  relation = clone
  relation.where_values += build_where(opts, rest) unless opts.blank?
  relation
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 search limit


    【解决方案1】:

    你的第二个例子有效:

    Users.where(:name => "Test_name").limit(10)
    

    这个 Rails 指南中有一个很好的列表和所有查询方法的解释:http://guides.rubyonrails.org/active_record_querying.html

    【讨论】:

    • 如果我使用 'Users.where(:name => "Test_name").limit(10)' 搜索将在数据库中找到 10 条记录时停止,否则它将获取所有数据库然后将返回前 10 条记录?
    • 它应该只获取 10 条记录。调用limit(10) 方法基本上只是在您的SQL 查询中添加一个“LIMIT 10”子句(它甚至还没有执行您的SQL 查询,直到您使用像firsteach 这样的集合方法)。
    【解决方案2】:

    我不认为你可以在哪里做到这一点。你只能这样做

    Users.where(:name => "Test_name").limit(10)
    

    或者如果你坚持在其他选择器方法中使用 :limit:

    Users.find(:all, :conditions => ["name = 'Test_name'"], :limit => 10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多