一般困惑
我有可以有 3 种流派的乐队。我在以前的 SO 帖子中读到,处理此问题的正确方法是几个步骤:
1) 在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 应该知道“收割者乐队”将指代乐队夹具中的乐队(当然同名)并会获取该 ID 并知道此夹具中的“乐队”将指代连接表中的 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。但是为什么 rails 不看那个并说“哦,他想将 id=2 的流派添加到 band_genres 表”。
我不指望 rails 会为我处理所有肮脏的工作,但我确实想遵守规则。