我的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的验证并添加更多。
答案 0 :(得分:0)
尝试使用项目指定的验证)
validates :price_check, :if => :frontend_module?
def frontend_module?
!!defined? FrontendApp # module name from application.rb
end