我有用戶模型,我想創建用戶之間的友誼。我已經實現了這個使用has_and_belongs_to_many單向導軌上的雙向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,但本文的解決方案非常複雜。
這個問題還有其他的解決方案嗎?我使用的是軌道5
與關聯和範圍相比,方法的缺點是在某些情況下,使用merge和相關機制時難以重用。 –
@ma_il同意。我不是這種技術的粉絲,但它的工作原理。 –