【发布时间】:2017-05-10 01:25:17
【问题描述】:
我有用户模型,我想在用户之间建立友谊。我已经使用 has_and_belongs_to_many 实现了这一目标
has_and_belongs_to_many :friends, class_name: 'User', foreign_key: :friend_id
我有这个关联的表:
create_table :users_users do |t|
t.uuid :user_id, null: false
t.uuid :friend_id, null: false
t.timestamps
end
当我通过 user.friends 结交朋友时,我需要关联当前用户在 user_id 列或friend_id 中的位置。我当前的解决方案只返回用户在friend_id 表中的记录。
我有两个解决方案:
- 重复记录 [{user_id: 1, friend_id: 2}, {user_id: 2,friend_id: 1}]
- 覆盖 user.friends 方法并返回我的自定义查询
这两种解决方案都不是优雅和最优的。
我已经阅读了article 的相关信息,但是这篇文章的解决方案非常复杂。
这个问题还有其他解决方案吗?我正在使用 Rails 5。
【问题讨论】:
标签: ruby-on-rails activerecord associations has-and-belongs-to-many has-many