Общая путаница
У меня есть группы, которые могут иметь 3 жанра. Я прочитал в предыдущем посте SO , что правильный способ справиться с этим - пара шагов:
1) In band.rb
has_and_belongs_to_many :genres
2) Создать таблицу соединений band_genres
Даже после прочтения документации я немного озадачен тем, что на самом деле означает HABTM. Думаю, я бы обычно думал, что «у группы много жанров», а не у многих. Так что быстрое объяснение этого было бы здорово.
Путаница с приборами
Также, когда я делаю свой прибор для band_genres, у меня есть
{
"The Reaper Band and Funk": { "band": "The Reaper Band", "genre": "Funk" },
"The Reaper Band and Rock": { "band": "The Reaper Band", "genre": "Rock" }
}
И я получаю «неизвестную» колонку группы. Я думал, что rails должен был знать, что «The Reaper Band» будет ссылаться на группу из фиксатора группы (с тем же именем), и будет захватывать этот идентификатор и знать, что «band» в этом устройстве будет ссылаться на band_id в таблице соединений , Я бы предпочел, чтобы мои приборы выглядели так, чем жестко закодированные номера.
Путаница с фабриками
Когда я создаю группу на своем заводе, я хочу назначить ей жанры:
Factory.define :band do |f|
f.sequence(:name) { |n| "Band#{n}" }
f.mailing_lists { |mailing_lists| [mailing_lists.association(:mailing_list)] }
f.genres 2
end
Я понимаю, что здесь мне, вероятно, понадобится жестко закодированный genre_id. Но почему рельсы не смотрят на это и не говорят «о, он хочет добавить жанр с id = 2 в таблицу band_genres».
Я не ожидаю, что рельсы позаботятся обо всей грязной работе для меня, но я хочу играть по правилам.