Я не могу понять подробное понимание следующей ассоциации рельсов.Ассоциации рельсов has_many через
has_many через has_and_belongs_to_many
Что это ассоциации делают и эффект на столе? пожалуйста, помогите
Я не могу понять подробное понимание следующей ассоциации рельсов.Ассоциации рельсов has_many через
has_many через has_and_belongs_to_many
Что это ассоциации делают и эффект на столе? пожалуйста, помогите
Has_many в основном говорит, что одна вещь связана со многими, например, одна категория имеет много продуктов внутри. Belongs_to в основном наоборот, поэтому продукт относится к категории. Они позволяют извлекать данные из таблицы, которая ссылается на другую таблицу, например. Вы можете получить заголовок категории из таблицы продуктов для определенного продукта по этой ссылке. Это помогает?
немного, но я спрашиваю о 1) has_many через 2) has_and_belongs_to_many –
Смотрите, если это помогает: https://www.ruby-forum.com/topic/76825 и: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html –
От Choosing Between has_many :through and has_and_belongs_to_many
Rails предлагает два различных способа объявить многие-ко-многим между моделями. Простой способ заключается в использовании has_and_belongs_to_many, , который позволяет сделать ассоциацию непосредственно:
class Assembly < ActiveRecord::Base has_and_belongs_to_many :parts end class Part < ActiveRecord::Base has_and_belongs_to_many :assemblies end
второй способ объявить многие-ко-многим является использование has_many: через. Это делает ассоциацию косвенно, через присоединиться модель:
class Assembly < ActiveRecord::Base has_many :manifests has_many :parts, through: :manifests end class Manifest < ActiveRecord::Base belongs_to :assembly belongs_to :part end class Part < ActiveRecord::Base has_many :manifests has_many :assemblies, through: :manifests end
Самое простое правило заключается в том, что вы должны создать has_many : через отношения, если вам нужно работать с моделью отношений как независимое юридическое лицо , Если вам не нужно ничего делать с моделью отношений , может быть проще установить отношения has_and_belongs_to_many (хотя вам нужно запомнить , чтобы создать таблицу соединения в базе данных).
Вы должны использовать has_many: через, если вам нужны проверки, обратные вызовы, или дополнительные атрибуты в модели соединения.
Позвольте мне выделить наиболее важное предложение:
Самое простое правило заключается в том, что вы должны создать has_many: через отношения, если вам нужно работать с моделью отношений как самостоятельного субъекта. Если вам не нужно ничего делать с моделью отношений, может быть проще установить отношение has_and_belongs_to_many
Я полагаю, вы уже прочитали официальную документацию. http://guides.rubyonrails.org/association_basics.html –