如何验证相关模型?

时间:2016-06-28 20:53:31

标签: ruby-on-rails

我是第一次构建自定义验证,因为尝试常规ORM验证不起作用。我有一个名为AdGroup的模型,属于另一个名为Car的模型。我想发送阻止用户创建新广告组的情况,如果他们没有选择汽车。汽车也是一个文件。

class AdGroup < ActiveRecord::Base
  belongs_to :car
  validate :validate_car_id

  def validate_car_id
    car = Car.find_by(id: params[:id])
    if car.nil?
      errors.add(:car, "Select a car image")
    end
  end
end

class Car < ActiveRecord::Base
  validates :make, :model, :year, presence: true                  
  validates :file, presence: true
  belongs_to :make
  has_many :ad_groups

  ...
end

是我想要选择的图片。

1 个答案:

答案 0 :(得分:2)

您的广告组模型需要与Car模型相关联。广告组模型应该有belongs_to :car行,而汽车模型需要has_many :ad_groups

要验证相关模型,您可以使用ActiveRecord的validates_associated。请务必通过链接阅读文档。

class AdGroup < ActiveRecord::Base
  belongs_to :car

  validates :car, presence: true
  validates_associated :car
end

使用validates_associated时,您无需进行自定义验证。