1. ホーム
  2. ruby-on-rails

[解決済み] Rails: 2つのカラムの一意性を検証する(一緒に)。

2022-04-22 16:42:53

質問

私は Release を持つモデル mediumcountry カラムがあります。があってはならない。 releases を共有し、同じ medium / country の組み合わせになります。

これをrailsのvalidationとして書くとどうなるのでしょうか?

どのように解決するのですか?

を使用することができます。 一意性 バリデーションを scope オプションで指定します。

また、書き込み前に新しいレコードが同時にチェックされてもバリデーションをパスしないように、DBにユニークインデックスを追加しておく必要があります。

class AddUniqueIndexToReleases < ActiveRecord::Migration
  def change
    add_index :releases, [:country, :medium], unique: true
  end
end



class Release < ActiveRecord::Base
  validates :country, uniqueness: { scope: :medium }
end