2013-12-17 153 views
0

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

你嘗試過'User.find(values [:user_id])。firstname'? – phoet

+0

@phoet會工作,但我寧願避免第二次數據庫查詢。 – janfoeh

+0

如果你可以做什麼@phoet寫什麼阻止你從'values [:firstname]''? –

回答

1

你可以做

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

this Rails issue,然而在一些3.2的迴歸,所以檢查這是否與您的版本。