1

「車」という名前のモデルがあります

2 つの属性が互いに一致する場合に 1 つのレコードのみが存在できるように、モデルでどのように宣言できるのでしょうか。たとえば、カーモデルでは

:owner_id, :driver_id

レコードが存在するとしましょう:

:id => "1", :owner_id => "22", :driver_id => "23", :state => "parked"

同じものを持ち、互いに一致する別のレコードを作成しようとするとowner_iddriver_idレコードはそれ自体を作成できません。所有者とドライバーが一致したときに、各所有者とドライバーに対して 1 つのレコードを作成する関係モデルを作成しようとしています。

4

1 に答える 1

8

Carモデルでは、検証を定義できます。

validates :driver_id, uniqueness: { scope: :owner_id }

これで意図した動作が得られるはずです。同じドライバーと所有者で別の車を作成しようとすると、検証エラーが発生します。

于 2013-03-19T23:47:14.910 に答える