Подтвердить что ты не робот

Как использовать FactoryGirl для создания атрибута под названием "псевдоним"?

Мне просто интересно, можно ли создать атрибут под названием "alias" с помощью FactoryGirl, поскольку псевдоним является зарезервированным словом в Ruby.

FactoryGirl.define do
  factory :blah do
    name "dummy"
    alias "dummy"
  end
end

Я пробовал различные комбинации ускользающих вещей, но не могу получить ничего полезного для работы.

4b9b3361

Ответ 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

Ответ 2

Определите переменную для блока factory .. do и методы вызова на ней.

FactoryGirl.define do
  factory :blah do |f|
    f.name "dummy"
    f.alias "dummy"
  end
end