1

どうすればそれを確認できますか:

一度私が持っている

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が機能するとは思わないでください。

4

2 に答える 2

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

于 2013-01-01T01:11:04.183 に答える
0

データベースはレールよりもはるかに効率的にこれを実行できるため、この場合は絶対にデータベース制約を使用します。

複数列のインデックスを作成する必要があります

add_index :table, [:column_one, :column_two], unique: true

これは、作成/更新で例外がスローされる可能性があることを意味することに注意してください。それがまれなケースであると予想される場合は、おそらく問題ありません。そうでない場合は、それについて何かしたいと思うでしょう。

于 2013-01-01T01:12:58.883 に答える