这是我第一次构建自定义验证,因为尝试常规 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
是我要选择的图像。
最佳答案
您的广告组型号需要与汽车型号相关联。 AdGroup 模型应具有 belongs_to :car
行,并且 Car 模型需要 has_many :ad_groups
。
要验证关联模型,您可以使用 ActiveRecord 的 validates_associated
。请务必阅读链接中的文档以了解陷阱。
class AdGroup < ActiveRecord::Base
belongs_to :car
validates :car, presence: true
validates_associated :car
end
使用validates_linked
时,您不必进行自定义验证。
关于ruby-on-rails - 如何验证关联模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086118/