2014-04-08 55 views
0

Rails 3.2Rails在控制台中查找范围

您如何在控制台中找到最后一个记录的范围?

Distributor.find_by_id(2..last) 

谢谢

+0

用'Distributor.where( 'ID> = 2')' – markets

+0

该工程尝试。我只是该范围会支持第一个和最后一个。 :( – DDDD

+0

不错,我添加并用另一个例子回答,希望它有帮助。 – markets

回答

2

你可以简单地做:

Distributor.where('id >= 2') 

这也适用,但它执行2个查询:

Distributor.where(id: 2..Distributor.last.id) 
0

最后一个(限=无)

查找最后一条记录(如果提供了参数,则为最后N条记录)。如果没有定义订单,它将按主键排序。

Person.last # returns the last object fetched by SELECT * FROM people 
Person.where(["user_name = ?", user_name]).last 
Person.order("created_on DESC").offset(5).last 
Person.last(3) # returns the last three objects fetched by SELECT * FROM people. 

http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html

def last(limit = nil) 
     if limit 
     if order_values.empty? && primary_key 
      order(arel_table[primary_key].desc).limit(limit).reverse 
     else 
      to_a.last(limit) 
     end 
     else 
     find_last 
     end 
    end 

https://github.com/rails/rails/blob/4e823b61190388219868744a34dcfe926bad511c/activerecord/lib/active_record/relation/finder_methods.rb#L157