如何使用FactoryGirl创建一个名为“别名”的属性?

我只是想知道是否可以使用FactoryGirl创建一个名为“alias”的属性,因为别名是Ruby中的保留字。

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

我已经尝试了各种逃避事物的组合,但却无法获得任何有用的工作。

Ruby不知道你是在尝试调用一个名为alias方法,还是将一个方法作为另一个方法,而默认为后者。 您可以通过这样做消除歧义

 self.alias "dummy" 

即,通过明确指定接收器。 这通常是在其他情况下进行的方式,无论您是在调用方法还是在做其他事情,例如,它都是模棱两可的

 self.foo = 'bar' 

调用foo=方法而不是创建一个名为foo的局部变量。

对于少数字段名称,这将不起作用。 Factory girl的DSL使用method_missing因此如果DSL对象具有该名称的方法,则会调用它。 在这些情况下,您可以执行DSL sugar normal为您执行的操作并直接调用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 

factory .. do定义一个变量factory .. do对它factory .. do阻塞和调用方法。

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