我如何确保:
一旦我
type: 1 style: 2
我无法添加
type: 2 style: 1
因为组合应该是唯一的吗?
我想:
validate :unique_relationship
def unique_relationship
(user_id.to_s + friend_id.to_s).uniq
end
但不要认为uniq会起作用。
答案 0 :(得分:1)
怎么样
def unique_relationship?
self.class.where("(user_id = ? and friend_id = ?) or (user_id = ? and friend_id = ?)", user_id, friend_id, friend_id, user_id).empty?
end
如果结果集为empty?
,则:user_id
和:friend_id
之间不存在任何关系。
答案 1 :(得分:0)
在这种情况下,我绝对会使用数据库约束,因为数据库可以比在rails中更有效地执行此操作。
您需要创建多列索引
add_index :table, [:column_one, :column_two], unique: true
注意,这意味着创建/更新现在可能会抛出异常。如果你期望这是一个罕见的情况,那可能没问题。如果没有,你会想要做些什么。