Ruby on rails Rails:通过模型向控制器添加错误消息
到目前为止,我了解到您只能在控制器中发出错误消息。销售模型是订单模型的子模型。所以我这样做了:Ruby on rails Rails:通过模型向控制器添加错误消息,ruby-on-rails,Ruby On Rails,到目前为止,我了解到您只能在控制器中发出错误消息。销售模型是订单模型的子模型。所以我这样做了: class SalesController < ApplicationController def create ... if @sale.errors.any? flash[:error] = "#{@order.sale.errors.full_messages.to_sentence}" end end class Sale < ActiveRecord::B
class SalesController < ApplicationController
def create
...
if @sale.errors.any?
flash[:error] = "#{@order.sale.errors.full_messages.to_sentence}"
end
end
class Sale < ActiveRecord::Base
before_save :discount
def discount=(discount)
if discount.present?
if current_user.maxdiscount >= discount.to_d
discount = discount.gsub(",", ".")
self[:discount] = discount
else
self.errors.add(:discount, "The discount is too high. The product was added without it.")
end
end
end
class SalesController=折扣.to\u d
折扣=折扣.gsub(“,”,“)
自我[:折扣]=折扣
其他的
self.errors.add(:折扣,“折扣太高,添加产品时没有折扣。”)
结束
结束
结束
但这是行不通的。主要目标是每当用户试图提交大于当前用户.maxdiscount的值时,都会发出错误消息
有什么想法吗?提前谢谢 是的,您可以在模型级别记录错误消息 但在回调中执行此操作时,必须通过返回
false
或手动引发错误来停止事务
class Sale < ActiveRecord::Base
before_save :discount
def discount=(discount)
if discount.present?
if current_user.maxdiscount >= discount.to_d
discount = discount.gsub(",", ".")
self[:discount] = discount
else
self.errors.add(:discount, "The discount is too high. The product was added without it.")
return false
end
end
end
class Sale=折扣.to\u d
折扣=折扣.gsub(“,”,“)
自我[:折扣]=折扣
其他的
self.errors.add(:折扣,“折扣太高,添加产品时没有折扣。”)
返回错误
结束
结束
结束