ruby-on-rails - 如何验证关联模型?

标签 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

是我要选择的图像。

最佳答案

您的广告组型号需要与汽车型号相关联。 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/

相关文章:

ruby-on-rails - 推荐用于 Ruby on Rails 3 的开发 Web 服务器

ruby-on-rails - wicked_pdf 不在 Ubuntu 服务器上运行 : wkhtmltopdf: cannot connect to X server

ruby-on-rails - Rails 3.x TLD长度

ruby-on-rails - rails 、 cucumber 、 capybara : session is not persisted

javascript - Rails,使用 AJAX 创建对象

javascript - 无论如何,我的侧边栏都是固定的。如何使用侧边栏进行滚动?

ruby-on-rails - 从 rails 调用 javascript 函数

ruby-on-rails - Postgres Json 字段的 Rails 自定义验证

ruby-on-rails - 在 Rails 6 和 Puma 上仍然需要工作启动时建立连接吗?

ruby-on-rails - 将回形针文件下载为 ZIP