Ruby не знает, пытаетесь ли вы вызвать метод с именем alias
или псевдоним одного метода как другого, и по умолчанию использует последний.Вы можете устранить неоднозначность, выполнив
self.alias "dummy"
, то есть, явно указав получателя.Это обычно способ пойти в других случаях, когда неоднозначно, вызываете ли вы метод или делаете что-то еще, например,
self.foo = 'bar'
, чтобы вызвать метод foo=
вместо создания локальной переменной с именем foo.
Для небольшого числа имен полей это не будет работать.DSL фабричной девушки использует method_missing
, поэтому, если у объекта DSL есть метод с таким именем, он будет вызываться вместо него.В этих случаях вы можете сделать то, что обычно делает для вас сахар DSL, и напрямую позвонить add_attribute
:
FactoryGirl.define do
factory :blah do
add_attribute :name, "some value"
end
end
- это то же самое, что
FactoryGirl.define do
factory :blah do
name "some value"
end
end