Ответ 1
Ruby не знает, пытаетесь ли вы вызвать метод с именем alias
или псевдоним одного метода в качестве другого, и по умолчанию используется последний. Вы можете устранить проблему, выполнив
self.alias "dummy"
т.е., явно указывая приемник. Обычно это путь в других случаях, когда это неоднозначно, вы вызываете метод или делаете что-то еще, например.
self.foo = 'bar'
чтобы вызвать метод foo=
, а не создать локальную переменную foo.
Для небольшое количество имен полей это не сработает. Factory Девушка 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