我有User
型号:
has_many :friendships, dependent: :destroy
has_many :friends, through: :friendships
has_many :inverse_friendships, class_name: "Friendship", foreign_key: "friend_id", dependent: :destroy
has_many :inverse_friends, through: :inverse_friendships, source: :user
和Friendship
模型:
belongs_to :user
belongs_to :friend, class_name: "User"
Friendship
表包含user_id
和friend_id
(user_id
是id
的{{1}},可创建user
关系)。
我想添加一个不允许创建两次相同friendship
关系的validation
(请看下面的示例):
friendship
答案 0 :(得分:1)
你应该写一个custom validator:
class Friendship < ActiveRecord::Base
validate :friendship_validation
private
def friendship_validation
if Friendship.where("(user_id=? AND friend_id=?) OR (user_id=? AND friend_id=?)", self.user_id, self.friend_id, self.friend_id, self.user_id).any?
errors.add(:friendship, "friendship exists")
end
end
end