Rails 5 order (: name) имеет много ассоциаций - PullRequest
0 голосов
/ 02 мая 2018

У меня есть две модели, product и variation Товар имеет_ множество вариаций и вариация принадлежит_ к товару Я показываю варианты продуктов в моем шаблоне, но не могу заставить order(:name) работать с ассоциацией variation - приведенный ниже код контроллера хочет заказать название продукта.

products_controller.rb

...
@products = Product.order(:name)
...

product.html.erb

...
<% @products.each do |product| %>
  <div class="grid-filter">
   <% product.variations.each do |v| %>
     <span class="copy">
       <%= v.name %>
     </span>
   <% end %>
  </div>
<% end %>
...

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вы можете заказать его в контроллере:

...
@products = Product.order(:name)
                   .includes(:variants)
                   .order('variants.name')
...
0 голосов
/ 12 июля 2019

Если вы хотите отсортировать продукт по названию вариантов, вы можете попробовать добавить порядок для самих ассоциаций в модель продукта следующим образом:

class Product
 has_many :variations, -> {order 'name'}
end
0 голосов
/ 02 мая 2018

Вы можете использовать порядок в представлении, так как «вариации» также являются ассоциациями

    ...
<% @products.each do |product| %>
  <div class="grid-filter">
   <% product.variations.order(:name).each do |v| %>
     <span class="copy">
       <%= v.name %>
     </span>
   <% end %>
  </div>
<% end %>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...