订购和限制

Mik*_*ike 4 ruby ruby-on-rails

我需要做以下查询:

SELECT * FROM "specimens" ORDER BY distribution_sheet_id DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我已经把:

<%=  Specimen.last(:order => :distribution_sheet_id).id  %>
Run Code Online (Sandbox Code Playgroud)

我喜欢输出'limit 10'而不是限制1.我认为它是.last,但是我可以用其他方式表达它来限制10.

谢谢

Sim*_*tti 5

假设您使用的是Rails 3

<%= Specimen.limit(10).order("distribution_sheet_id").all %>
Run Code Online (Sandbox Code Playgroud)

请注意,如果限制为多于1条记录,#id则最后无法调用,因为结果是数组.

获得所有的ID

<%= Specimen.limit(10).order("distribution_sheet_id").map(&:id) %>
Run Code Online (Sandbox Code Playgroud)

对于Rails 2.3,使用旧的基于哈希的条件.

<%= Specimen.all(:order => "distribution_sheet_id", :limit => 10) %>
Run Code Online (Sandbox Code Playgroud)

这同样适用于id

<%= Specimen.all(:order => "distribution_sheet_id", :limit => 10).map(&:id) %>
Run Code Online (Sandbox Code Playgroud)

在这里,我使用该#to_sentence方法加入所有ID.根据您的使用情况调整代码.

<%= Specimen.all(:order => "distribution_sheet_id", :limit => 10).map(&:id).to_sentence %>
Run Code Online (Sandbox Code Playgroud)