Rails注入验证方法而不覆盖它

时间:2014-03-08 05:09:35

标签: ruby-on-rails validation

我的Rails3应用程序中的验证存在问题。我的应用程序基于Rails 2 API,已经对某些字段进行了一些基本验证,例如“price”。

//Rails Backend API price.rb
validates_presence_of :price

现在,如果我在我的前端Rails 3应用程序上使用相同的模型并添加自定义验证,它将覆盖我的后端应用程序api中定义的所有其他验证。

// Rails Frontend App price.rb
class Price < ActiveResource::Base
validate :price_check
def price_check
    if self.price > self.old_price
      self.errors.add(:price, I18n.t('activerecord.errors.messages.price', :old_price => self.old_price))
    end
  end

我知道我从我的后端api覆盖了验证方法,这就是为什么其他验证不再起作用了 - 它是相同的模型 - 当然我也是。现在,如何在不覆盖现有验证的情况下添加验证? 我在保存之前尝试了一些after_validation /但是这也没有用。我想保留api的验证并添加更多。

1 个答案:

答案 0 :(得分:0)

尝试使用项目指定的验证)

validates :price_check, :if => :frontend_module?

def frontend_module?
  !!defined? FrontendApp # module name from application.rb
end