Как упорядочить ассоциацию has_many по столбцу таблицы соединений - PullRequest
2 голосов
/ 03 августа 2011

Учитывая следующие модели:

class Menu < ActiveRecord::Base
  has_many :items
end

class Items < ActiveRecord::Base
  has_and_belongs_to_many :menus
end

Каждое меню должно иметь отдельный порядок сортировки для своих пунктов

Обычно я добавляю столбец sort_order в таблицу соединений menus_items

Нужно ли создавать новую модель для хранения этой информации и добавлять отношения :through?

Какой лучший способ настроить это в Rails?

1 Ответ

2 голосов
/ 03 августа 2011

Да, вам нужно создать новый класс MenuItem и связанную таблицу menu_items.

class Menu
   has_many :menu_items, :order => 'sort_order'
   has_many :items, :through => :menu_items
end

class MenuItem
   belongs_to :menu
   belongs_to :item
end

class Item
   has_many :menu_items
   has_many :menus, :through => :menu_items
end

В вашей таблице menu_items должен быть столбец для menu_id, item_id и sort_order (или того, что вы используете в качестве имени столбца сортировки). Помните, что вам нужно обработать настройку sort_order. Вы можете использовать плагин acts_as_list или добавить логику самостоятельно, в зависимости от ваших требований.

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