1

私は製品とブランドの製品モデルを持っています:

class Product < ActiveRecord::Base
  attr_accessible :brand_id, :title
  belongs_to :brand

  validates :title, :presence => true
  validates :brand, :presence => {:message => 'The brand no exists'}
end

とブランドモデル

class Brand < ActiveRecord::Base
  attr_accessible  :name
  validates :name, :presence => true

  has_many :products, :dependent => :destroy
end

このブランドの名前の製品が存在するかどうかを検証したいと思います。つまり、異なるブランドで同じ名前の2つの製品を使用できますが、同じブランドでは使用できません。

4

1 に答える 1

1

:でuniqueness検証を使用できます。scope

validates :name, :uniqueness => { :scope => :brand_id }

リレーションに対して検証を行うことができないため、の:brand_id代わりに指定する必要があることに注意してください。:brand

わからない場合は、ActiveRecordの検証とコールバックガイドを読むことをお勧めします。

注意:構文{:foo => 'bar'}は(Ruby 1.9.2以降)。に置き換えられています{foo: 'bar'}

于 2012-09-07T11:57:24.603 に答える