Как я могу написать это как один запрос? - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть модель, которая называется Shop, и одна, которая называется Brand.

shop :has_many_brands
brands: belongs_to_shop

Я хочу сделать один запрос, который выполняет следующие действия.
Выберите все магазины и бренды. Показать список всех магазинов, сначала показать магазины, бренды которых упорядочены по shop.name, а затем показать остальные магазины, упорядоченные по shop.name.

Надеюсь, это имеет смысл ...

Возможно ли это?

1 Ответ

0 голосов
/ 19 апреля 2011

Если вам просто нужен листинг в представлении, самый простой способ сделать это - отобразить один, а затем другой.

Таким образом, вы будете отображать все магазины с брендами и сортировать их как обычно.

Затем отобразите все магазины без брендов и выполните сортировку в обычном режиме.

В вашем магазине покажите контроллер:

if Shop.brands.empty?
   @shopsWithout = @shops.sort_by{ |shop| shop.name}
else
   @shopsWith = @shops.sort_by{ |shop| topic.name}
end

тогда, на ваш взгляд, просто отобразите каждый.

<% unless @shopsWith.blank?  %>
  <% @shopsWith.each do |shop| %>
    Shop: <%= shop.name %> Brand: <%= (you can loop shop.brands.all) %>
  <% end %>
<% end %>
<% unless @shopsWithout.blank? %>
  <% @shopsWithout.each do |shop| %>
    Shop: <%= shop.name %><br />
  <% end %>
<% end %>

Я проверил это, и он отлично работает. Не уверен, как объединить @shopsWith и @shopsWithout, но если вы можете сделать это в контроллере (@shops = @shopsWith << @shopsWithout), то вам нужен только один цикл. Я не смог понять это без мысли Руби, что я использую массив вместо коллекции объектов. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...