How to use FactoryGirl to create an attribute called “alias”?

后端 未结 2 1899
萌比男神i
萌比男神i 2021-02-07 02:02

I\'m just wondering whether it\'s possible to create an attribute called \"alias\" using FactoryGirl, since alias is a reserved word in Ruby.

FactoryGirl.define          


        
相关标签:
2条回答
  • Ruby doesn't know whether you're trying to call a method called alias or alias one method as another, and defaults to the latter. You can disambiguate by doing

    self.alias "dummy"
    

    ie, by explicitly specifying the receiver. This is usually the way to go in other cases where it is ambiguous whether you are calling a method or doing something else e.g.

    self.foo = 'bar'
    

    to call the foo= method rather than create a local variable called foo.

    For a small number of field names this won't work. Factory girl's DSL uses method_missing so if the DSL object has a method of that name it will be called instead. In those cases you can do what the DSL sugar normal does for you and call add_attribute directly:

    FactoryGirl.define do
      factory :blah do
        add_attribute :name, "some value"
      end
    end
    

    is the same as

    FactoryGirl.define do
      factory :blah do
        name "some value"
      end
    end
    
    0 讨论(0)
  • 2021-02-07 02:30

    Define a variable for the factory .. do block and call methods on it.

    FactoryGirl.define do
      factory :blah do |f|
        f.name "dummy"
        f.alias "dummy"
      end
    end
    
    0 讨论(0)
提交回复
热议问题