Как использовать FactoryGirl для создания атрибута под названием «псевдоним»? - PullRequest
21 голосов
/ 16 февраля 2012

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

Ответы [ 2 ]

34 голосов
/ 16 февраля 2012

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
1 голос
/ 02 октября 2017

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

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