0

У меня есть настройки ассоциации HMT между моими Artist и Group моделями:Хорошо ли проверять идентификаторы в модели соединения?

class Artist < ApplicationRecord 
    has_many :artist_groups, dependent: :destroy 
    has_many :artist_groups, through: :artist_groups 
end 

class ArtistGroup < ApplicationRecord 
    has_many :memberships, class_name: "ArtistGroupMembership", dependent: :destroy 

    belongs_to :artist 
    belongs_to :group 

    has_and_belongs_to_many :roles 

    accepts_nested_attributes_for :memberships, reject_if: :all_blank, allow_destroy: true 

    validates_presence_of :artist_id, :group_id 
end 

class Group < ApplicationRecord 
    has_many :artist_groups, dependent: :destroy 
    has_many :members, through: :artist_groups, source: :artist 
end 

Как вы заметили, в моем ArtistGroup присоединиться к модели он проверяет, чтобы убедиться, что художник и группа присутствует.

Когда ассоциация сохраняется, делать ли я что-то вроде этого:

artist.groups.push(Group.first) 

или создать форму на мой взгляд (без ID входа) ActiveRecord достаточно умна, чтобы отобразить ассоциацию. С этим в моем случае я должен даже проверять эти идентификаторы в моих моделях присоединения? Я замечаю, что это становится еще болью при работе с полиморфными ассоциациями.

ответ

0

Rails 5 автоматически требует, чтобы belongs_to :artist ссылается на существующий artist, поэтому наличие дополнительной проверки совершенно не нужно. Вы можете сделать это требование дополнительным, выполнив

belongs_to :artist, optional: true