我只是想知道是否可以使用FactoryGirl創建一個名爲「別名」的屬性,因爲別名是Ruby中的保留字。如何使用FactoryGirl創建一個名爲「別名」的屬性?
FactoryGirl.define do
factory :blah do
name "dummy"
alias "dummy"
end
end
我試過各種組合逃逸的東西,但不能得到任何有用的工作。
我只是想知道是否可以使用FactoryGirl創建一個名爲「別名」的屬性,因爲別名是Ruby中的保留字。如何使用FactoryGirl創建一個名爲「別名」的屬性?
FactoryGirl.define do
factory :blah do
name "dummy"
alias "dummy"
end
end
我試過各種組合逃逸的東西,但不能得到任何有用的工作。
Ruby不知道您是要調用alias
的方法,還是將另一種方法別名,並且默認爲後者。你可以通過做消除歧義
self.alias "dummy"
即,通過明確指定接收者。在其他情況下,如果您正在調用方法或執行其他操作
self.foo = 'bar'
調用foo=
方法,而不是創建一個名爲foo的一個局部變量。
對於small number of field names這不起作用。工廠女孩的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
定義就可以了factory .. do
塊和調用方法的變量。
FactoryGirl.define do
factory :blah do |f|
f.name "dummy"
f.alias "dummy"
end
end
使用'self.alias'完成了訣竅。儘管我已經嘗試過,但我仍然樂觀。 ( - :謝謝! – 2012-02-16 21:22:35
只是有這個問題,我的模型有一個名爲「end」的屬性,'self.end'使它工作。 – GMA 2014-01-08 12:35:19
該死的,這對名爲'method'的字段不起作用。 – 2014-12-02 00:55:41