AdilA
@AdilA
Нравится кодить, изучаю go c echo

Как правильно отобразить выбранные юзером категории?

Есть пользователи у пользователей есть категории выполняемых работ, у категорий есть субкатегории в той же табличке но с parent_id родительской категории
сделал так:
User.rb
has_many :users_ecategories
  has_many :ecategories, through: :users_ecategories


jointable
users_ecategory.rb
class UsersEcategory < ActiveRecord::Base
  belongs_to :user
  belongs_to :ecategory
end


ecategory.rb
class Ecategory < ActiveRecord::Base
	has_many :users_ecategories
  	has_many :users, through: :users_ecategories
  	belongs_to :parent, class_name: 'Ecategory', foreign_key: 'parent_id'
end


во вьюхе указываю:

<ul>
            <% @user.ecategories.each do |ecategory| %>
            <%= ecategory.parent.name %>
            <li>
              <ul>
                <% @user.ecategories.where(parent_id: ecategory.parent.id).each do |sub_ecategory| %>
                <li>
                  <%= sub_ecategory.name %>
                </li>
              </ul>
            </li>
          </ul>
<% end %>
<% end %>


но вытаскивает следующее

Посетитель
Привилегированный посетитель
Простой посетитель
Посетитель
Привилегированный посетитель
Простой посетитель

то есть вытаскивает родительскую категорию два раза, а надо чтобы один раз и под ней дочерние подскажите как лучше сделать?
  • Вопрос задан
  • 2259 просмотров
Решения вопроса 3
amerov
@amerov
Web Developer
Ответ написан
Комментировать
@vsuhachev
Если задача не учебная, то поддержу коллегу - используйте готовое решение. Есть еще awesome_nested_set, там данные заранее упорядочены. Долго на вставку, быстро на выборку.

По вашему коду - не понятно, привязаны ли к пользователю только родительские категории или же все категории включая дочерние? Или привязана только одна под-категория, и по ней вы хотите получить всех ее сестер?
Ответ написан
Комментировать
AdilA
@AdilA Автор вопроса
Нравится кодить, изучаю go c echo
как обычно всё оказалось просто)))) может и не кошерно но зато быстро без использования библиотек

<ul>
            <% @user.ecategories.group_by{|e| e.parent_id}.each do |parent, ecategories| %>
            <%= Ecategory.find(parent).name %>
            <li>
              <ul>
                <% ecategories.each do |ecategory| %>
                <li>
                  <%= ecategory.name %>
                  <% end %>
                  <% end %>
                </li>
              </ul>
            </li>
          </ul>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы