访问验证消息中的模型实例

时间:2013-12-17 18:07:45

标签: ruby-on-rails activerecord ruby-on-rails-4

Events可以邀请每个User一次:

class Invitation < ActiveRecord::Base  
  belongs_to  :event
  belongs_to  :user

  validates_uniqueness_of :user_id,
                          scope: :event_id,
                          message: "has already been invited"
end

我想在错误消息中包含用户名,这是

的效果
validates_uniqueness_of :user_id,
                         scope: :event_id,
                         message: ->(error, values) { "#{user.firstname} has already been invited" }

但是我无法从lambda中访问模型实例。有解决方法吗?

1 个答案:

答案 0 :(得分:1)

你可以做到

validates_uniqueness_of :user, 
                        scope: :event,
                        message: ->(error, values) { "#{values[:user].firstname} has already been invited" }

根据this Rails issue,但3.2中有一些回归,因此请检查这是否适用于您的版本。