どうすればそれを確認できますか:
一度私が持っている
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が機能するとは思わないでください。
どうすればそれを確認できますか:
一度私が持っている
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が機能するとは思わないでください。
どうですか
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
データベースはレールよりもはるかに効率的にこれを実行できるため、この場合は絶対にデータベース制約を使用します。
複数列のインデックスを作成する必要があります
add_index :table, [:column_one, :column_two], unique: true
これは、作成/更新で例外がスローされる可能性があることを意味することに注意してください。それがまれなケースであると予想される場合は、おそらく問題ありません。そうでない場合は、それについて何かしたいと思うでしょう。