这是我第一次构建自定义验证,因为尝试常规 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
Run Code Online (Sandbox Code Playgroud)
是我试图选择的图像。
您的广告组型号需要与汽车型号相关联。AdGroup 模型应该符合belongs_to :carCar 模型和路线的需要has_many :ad_groups。
要验证关联模型,您可以使用 ActiveRecord 的validates_associated. 请务必阅读链接中的文档以了解陷阱。
class AdGroup < ActiveRecord::Base
belongs_to :car
validates :car, presence: true
validates_associated :car
end
Run Code Online (Sandbox Code Playgroud)
使用时validates_associated您不必进行自定义验证。
| 归档时间: |
|
| 查看次数: |
5290 次 |
| 最近记录: |