Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:通过模型向控制器添加错误消息_Ruby On Rails - Fatal编程技术网

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(:折扣,“折扣太高,添加产品时没有折扣。”)
返回错误
结束
结束
结束