Предположим, у меня есть класс модели, подобный этому:
class Shoebox < ActiveRecord::Base
validates_inclusion_of :description, :in => ["small", "medium"],
:message => I18n.t("activerecord.errors.models.shoebox.with_name",
:name => name)
end
И немного yaml:
en:
activerecord:
errors:
models:
shoebox:
with_name: "the description of %{name} is not in the approved list"
И я создаю новый Shoebox:
s = Shoebox.new(:description => "large", :name => "Bob")
s.valid?
Но когда я смотрю на ошибку (s.errors.first.message), я вижу:
"описание Shoebox отсутствует в утвержденном списке"
а не:
"описание Боба отсутствует в утвержденном списке"
Я пробовал :name => name
, :name => :name
, :name => lambda{name}
, :name => lambda{:name}
.
Я пытался создать вспомогательный метод
def shoebox_name
name
end
И передать :name => shoebox_name
, :name => :shoebox_name
, :name => lambda{shoebox_name}
и :name => lambda {:shoebox_name}
.
Как я могу получить значение ivar для имени, которое будет интерполировано в строку?