Соглашение об этом заключается в использовании имен обеих моделей. Хорошее имя может быть ItemOrders
. У многих есть почти правильный выбор здесь.
class Order < ActiveRecord::Base
has_many :item_orders, dependent: :destroy
has_many :items, through: :item_orders
end
class Item < ActiveRecord::Base
has_many :item_orders, dependent: :destroy
has_many :orders, through: :item_orders
end
class ItemOrder < ActiveRecord::Base
belongs_to :item
belongs_to :order
end
Теперь вы просто другой ActiveRecord
модель, и вы можете добавить к ней, как вы хотите. Это также будет полезно для отладки. Вы можете даже использовать генератор модели/эшафот, чтобы произвести эти:
rails g model item_order order:references item:references
Таким образом, вы получаете миграции правильно сразу. Ничего не нужно изменять на других моделях, кроме вышеуказанного кода.
[Это основная вещь, описанная в руководствах.] (Http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association) –
@ RustamA.Gasanov Да, я проверил руководства, но было непонятно, была ли HMT правильной по сравнению с HABTM – Taylor
HMT почти всегда является правильным выбором, если вы на 100% уверены, что вам не понадобится промежуточная модель –