我是第一次构建自定义验证,因为尝试常规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
是我想要选择的图片。
答案 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
时,您无需进行自定义验证。