引用制造中的字段

sli*_*000 3 ruby rspec fabrication-gem

在下面的示例中,我abbr只想作为的前3个字母,name但得到>>不确定的局部变量name...我猜是因为name超出了{}块的范围?

Fabricator(:team) do
  name { Faker::Name.first_name }
  abbr { Faker::Name.first_name[0..2] }
  league { Fabricate(:league) }  
end
Run Code Online (Sandbox Code Playgroud)

我怎样才能abbr只写字母的前三个字母name

即这引发错误

Fabricator(:team) do
  name { Faker::Name.first_name }
  abbr { name[0..2] }  \\ error name is undefined here
  league { Fabricate(:league) }  
end
Run Code Online (Sandbox Code Playgroud)

小智 5

您也可以通过在abbr值块中接受属性哈希来实现。

Fabricator(:team) do
  name { Faker::Name.first_name }
  abbr { |attrs| attrs[:name][0..2] }
  league
end
Run Code Online (Sandbox Code Playgroud)

无关,但如果您这样编写,联赛将自动扩展到您在上面指定的位置。