在下面的示例中,我希望 abbr
只是 name
的前 3 个字母,但我得到一个 >> 未定义的局部变量 name
...我猜是因为 name
超出了 {} block 的范围?
Fabricator(:team) do
name { Faker::Name.first_name }
abbr { Faker::Name.first_name[0..2] }
league { Fabricate(:league) }
end
如何使 abbr
只是 name
的前三个字母?
即这会引发错误
Fabricator(:team) do
name { Faker::Name.first_name }
abbr { name[0..2] } \\ error name is undefined here
league { Fabricate(:league) }
end
最佳答案
您也可以通过接受缩写值 block 中的属性散列来实现。
Fabricator(:team) do
name { Faker::Name.first_name }
abbr { |attrs| attrs[:name][0..2] }
league
end
无关,但如果你这样写,联盟会自动扩展到你上面指定的内容。
关于ruby - 引用 Fabrication 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797165/