Help with String interpolation of ivar


#1

Suppose I have a model class like this:
class Shoebox < ActiveRecord::Base
validates_inclusion_of :description, :in => [“small”, “medium”],
:message => I18n.t(“activerecord.errors.models.shoebox.with_name”,
:name => name)
end

And some yaml:
en:
activerecord:
errors:
models:
shoebox:
with_name: “the description of %{name} is not in the approved list”

And I create a new Shoebox:
s = Shoebox.new(:description => “large”, :name => “Bob”)
s.valid?

But when I look at the error (s.errors.first.message), I see:
“the description of Shoebox is not in the approved list”

and not:
“the description of Bob is not in the approved list”

I’ve tried :name => name, , :name => :name, :name => lambda{name},
:name => lambda{:name}.

I’ve tried creating a helper method
def shoebox_name
name
end

And passing :name => shoebox_name, :name => :shoebox_name, :name =>
lambda{shoebox_name} and :name => lambda {:shoebox_name}.

How can I get the ivar value for name to be interpolated into the
string?

Paul