Mat*_*iby 1 ruby ruby-on-rails ruby-on-rails-3
我有这个条件,检查该国家是否在美国
if params[:address][:country] != 'United States'
logger.info "I am in here"
@address.errors.add(:base, "We're sorry, you cant update your address")
@address.errors.add(:country, "We're sorry, you cant update your address")
end
if @address.update_attributes(params[:address])
flash[:notice] = 'Information was successfully updated.'
Run Code Online (Sandbox Code Playgroud)
但我假设如果你在一个对象的基础上添加了一个错误,它就会暂停,但没有任何东西停止更新,闪存通知总是会出现......我如何阻止它并添加一个flash错误代替
随机添加错误通道@address.errors.add()不会导致记录无效.这就是为什么你的调用update_attributes仍在发生(而不是抛出验证错误).据我所知,要正常运行,errors.add()需要在rails验证机制内部进行.否则,你会得到一些奇怪的行为.
例如,检查一下 rails console
# assume a valid record
@address = Address.first
@address.valid? # => true
@address.errors.add(:random_error, "random error")
@address.errors # => {:random_error => ["random error"]}
@address.valid? # => true
@address.errors # => [] - call to valid? caused added error to disappear
Run Code Online (Sandbox Code Playgroud)
您希望valid?在添加错误之后进行调用,false但事实并非如此.它也最终清除你刚添加的错误.
你说你不能把这个移到模型上,但那真的是适合这个的地方.您可以在此处查看有关活动记录验证的更多信息.请注意,所有示例都在模型中进行了验证.
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |