: ограничение количества строк, найденных в коллекции (has_many association)
61
8
Категория
has_many :products
has_many :deals, :through => :products
продукт
has_many :deals
Я хочу отобразить ограниченное количество сделок на странице категории.
В категории_helper.rb:
def deals
@category.products.collect { |c| c.deals}.flatten
end
В show.html.erb(Категория):
<% for deal in deals %>
<%= deal.name %>
<% end %>
Это работает отлично, НО он явно выбрасывает все сделки для продуктов этой категории, и я хочу только 8 из них. Поэтому я хотел бы применить (. limit = > 8) к .collect. Я просто не могу понять, куда он пойдет. Также я хотел бы сделать второй поиск с (: offset = > 8), который я покажу только по запросу.
спросил(а)
2010-07-14T15:25:00+04:00
10 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Решение
73
Вам не нужно collect
, так как у вас есть ассоциация has-many-through
. Я считаю, что это то, что вы ищете:
@category.deals.all(:limit => 8)
ответил(а)
2010-07-14T15:59:00+04:00
10 лет, 6 месяцев назад
добавить комментарий
пожаловаться
60
Это должно работать:
@category.products.find(:all, :limit => 8)
ответил(а)
2010-07-14T15:38:00+04:00
10 лет, 6 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ
- Вопросы
- Has-many-through
- : ограничение количества строк, найденных в коллекции (has_many association)