Ruby on rails 3.2 Rails验证-具有相关模型属性的自定义错误消息

Ruby on rails 3.2 Rails验证-具有相关模型属性的自定义错误消息,ruby-on-rails-3.2,Ruby On Rails 3.2,我有一个具有如下属性的支出模型:[code>:user\u id,:activity\u id,:date,…] 关系包括: expense belongs_to user expense belongs_to activity 我有以下验证 validates :activity_id, uniqueness: scope: [:user_id, :date], message: "Expense for 'activity_name' on date '1/1/2012' is alrea

我有一个具有如下属性的支出模型:[code>:user\u id,
:activity\u id
:date
,…]

关系包括:

expense belongs_to user
expense belongs_to activity
我有以下验证

validates :activity_id, uniqueness: scope: [:user_id, :date], message: "Expense for 'activity_name' on date '1/1/2012' is already entered"

如何将
activity\u name
date
放入错误消息中?

您可以使用
:message
属性。这里是内联方法

validates :activity_id, :uniqueness => {:scope => [:user_id, :date], :message => "Expense for "+ activity_name + " on date " + date + " is already entered"}

您可以使用
:message
属性。这里是内联方法

validates :activity_id, :uniqueness => {:scope => [:user_id, :date], :message => "Expense for "+ activity_name + " on date " + date + " is already entered"}
另一种方法(非内联)是:

在型号代码中:

validates :activity_id, uniqueness: => {scope: [:user_id, :date], :message => "error is here"}
视图代码:

  = form_for(@expense) do |f|
    - if @expense.errors.any?
      = pluralize(@expense.errors.count, "error")
        prohibited this link from being saved:

        %ul
          -@expense.errors.full_messages.each do |msg|
            - if msg[0,12] == "error is here"
              = "Expense for "+ params[:activity_name] + " on date " + params[:date] + " is already entered"
params[:activity\u name]
是访问输入数据的正确方法。

另一种方法(非内联)是:

在型号代码中:

validates :activity_id, uniqueness: => {scope: [:user_id, :date], :message => "error is here"}
视图代码:

  = form_for(@expense) do |f|
    - if @expense.errors.any?
      = pluralize(@expense.errors.count, "error")
        prohibited this link from being saved:

        %ul
          -@expense.errors.full_messages.each do |msg|
            - if msg[0,12] == "error is here"
              = "Expense for "+ params[:activity_name] + " on date " + params[:date] + " is already entered"

params[:activity\u name]
是访问输入数据的正确方法。

这是我的问题,如何将这些值添加到消息中。我会编辑我的qs如果它不清楚我喜欢这个想法。但我想知道是否有解决方案,这不是一个解决办法。这似乎是一个黑客,我不能在提交多个嵌套属性的表单中这样做。我在模型本身中寻找解决方案。我尝试过对消息使用Procs,但没有成功。无论如何,你的方法很好:)@桑托什在线解决方案已经找到。请检查一下。我看到你的编辑后回复了。我想从模型本身添加自定义错误消息。不添加一些消息并使用条件在视图中显示其他内容。这是我的问题,如何将这些值添加到消息中。我会编辑我的qs如果它不清楚我喜欢这个想法。但我想知道是否有解决方案,这不是一个解决办法。这似乎是一个黑客,我不能在提交多个嵌套属性的表单中这样做。我在模型本身中寻找解决方案。我尝试过对消息使用Procs,但没有成功。无论如何,你的方法很好:)@桑托什在线解决方案已经找到。请检查一下。我看到你的编辑后回复了。我想从模型本身添加自定义错误消息。不添加某些消息并使用条件在视图中显示其他内容。