我在一个自引用的模型中有很多直通关系。在连接表中,我还有一个额外的列来定义关系的来源。向该关系添加新对象时,我想避免基于 user_id、friend_id 和 source_id 的连接表中的重复项
用户模型
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, :class_name => "User", :through => :friendships
end
加入模型
class Friendship < ActiveRecord::Base
attr_accessible :friend_id, :user_id, :source_id, :alert, :hide
# Relationships
belongs_to :user
belongs_to :friend, :class_name => "User"
has_one :source
end
我明白我可以做到这一点
unless user.friends.include?(newFriend)
user.friendships.build(:friend_id => friendUser.id, :source_id => source.id)
end
但这似乎会检查新用户是否存在于当前用户的朋友中。我需要检查连接模型级别并确保与给定源 ID 的连接不存在。
我知道有几种方法可以做到这一点,但我对 ruby on rails 还是很陌生,我正在寻找“rails 方式”来做到这一点。