验证此belongs_to中的状态

时间:2012-09-07 11:25:32

标签: ruby-on-rails ruby ruby-on-rails-3 belongs-to

我有产品和品牌 产品型号:

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种产品,但不能使用同一品牌。

1 个答案:

答案 0 :(得分:1)

您可以将uniqueness验证与scope

一起使用
validates :name, :uniqueness => { :scope => :brand_id }

请注意,您必须指定:brand_id而不是:brand,因为无法对关系进行验证。

如果您不知道,建议您阅读Active Record Validations and Callbacks指南。

注意:语法{:foo => 'bar'}{foo: 'bar'}替换(自Ruby 1.9.2起)。