【发布时间】:2012-02-16 10:46:32
【问题描述】:
我只是想知道是否可以使用 FactoryGirl 创建一个名为“alias”的属性,因为 alias 是 Ruby 中的保留字。
FactoryGirl.define do
factory :blah do
name "dummy"
alias "dummy"
end
end
我尝试了各种逃避事物的组合,但无法获得任何有用的工作。
【问题讨论】:
标签: ruby factory-bot
我只是想知道是否可以使用 FactoryGirl 创建一个名为“alias”的属性,因为 alias 是 Ruby 中的保留字。
FactoryGirl.define do
factory :blah do
name "dummy"
alias "dummy"
end
end
我尝试了各种逃避事物的组合,但无法获得任何有用的工作。
【问题讨论】:
标签: ruby factory-bot
Ruby 不知道您是在尝试调用名为alias 的方法还是将一个方法别名为另一个方法,并且默认为后者。您可以通过这样做来消除歧义
self.alias "dummy"
即,通过明确指定接收者。这通常是在其他情况下的方式,无论您是调用方法还是执行其他操作,例如
self.foo = 'bar'
调用foo= 方法而不是创建一个名为 foo 的局部变量。
对于small number of field names,这是行不通的。 Factory girl 的 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
【讨论】:
self.alias 成功了。我很肯定我已经尝试过了。 (-:谢谢!
self.end 让它工作。
为factory .. do 块定义一个变量并在其上调用方法。
FactoryGirl.define do
factory :blah do |f|
f.name "dummy"
f.alias "dummy"
end
end
【讨论】: