:限制在collect中找到的行数(has_many关联)

时间:2010-07-14 12:25:56

标签: ruby-on-rails collections limit has-many-through

类别

has_many :products
has_many :deals, :through => :products

产品

has_many :deals

我想在类别页面上显示有限数量的交易。

在categories_helper.rb中:

def deals
 @category.products.collect { |c| c.deals}.flatten
end

在show.html.erb(类别)中:

<% for deal in deals  %>
 <%=  deal.name %>
<% end %>

这很好用,但它显然抛弃了该类别产品的所有交易,我只想要其中的8个。 所以我想将(:limit =&gt; 8)应用于.collect。我只是无法弄清楚它会去哪里。另外我想用(:offset =&gt; 8)进行第二次查找,我只会根据要求显示。

2 个答案:

答案 0 :(得分:2)

由于您拥有collect关联,因此您不需要has-many-through。我相信这就是你要找的东西:

@category.deals.all(:limit => 8)

答案 1 :(得分:1)

这应该有效:

@category.products.find(:all, :limit => 8)