【发布时间】:2012-12-22 11:33:55
【问题描述】:
我正在尝试与 has_and_belongs_to_many 建立朋友和敌人的联系, 因此我创建了以下内容:
create_table :people do |t|
t.string :name
end
create_table "relations", :id => false do |t|
t.integer "person_a_id", :null => false
t.integer "person_b_id", :null => false
t.boolean :friends
end
我希望完成的第一个阶段是定义 Person: HABTM 关系,然后是定义范围。 现在我在 Person 中定义连接时遇到了麻烦,因为 has_and_belongs_to_many 有 :foreign_key 和 :association_foreign_key,所以如果 A 是 B 的朋友,则 B 不是 A 的朋友。 我搜索了 HABTM 注释,发现的唯一选项是手动设置:finder_sql 和:delete_sql。 我很确定我缺少一个优雅的解决方案。
谢谢
【问题讨论】:
-
假设如果 A 是 B 的“朋友”那么 B 一定是 A 的“朋友”是否正确?我可能会采用某种邀请模式,因为双方都需要就友谊达成一致。
-
以上所有,对于HABTM关联,在命名关联表时需要遵循一个约定。复数形式的第一个模型在复数形式中下划线第二个模型。示例:baby_clothes 或 admins_users
-
Jiří Pospíšil:A 和 B 是不是朋友是我的决定。所以不像脸书,这不是社交网络……建立这种联系是最终的。可怕的家伙:当你的两张桌子都一样时,这有点问题。制作名为“people_people”的表将导致有两个名为“person_id”的列。谢谢你们的评论!
标签: ruby-on-rails-3 has-and-belongs-to-many