ruby - 引用 Fabrication 中的字段

标签 ruby rspec fabrication-gem

在下面的示例中,我希望 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/

相关文章:

ruby - 未初始化常量(NameError)问题 - 如何包含类?

Ruby - 使用 WWW::Mechanize 和 NET::HTTP::GET 的 Socks4 代理

rspec - 在 rspec 测试中获取以字符串形式提供的 url 或路径

ruby-on-rails - 如何使用 rspec + fabrication 进行简单测试?

ruby-on-rails - 制造 gem 循环依赖

javascript - 使用提交按钮将 plan_id 传递到参数中

ruby-on-rails - Rails 不保存已更改的属性

rspec - 将 ruby​​ 更新到 2.7.1 后,rspec 测试抛出错误 `Bundler::GemfileError for status code 4 but Bundler::GemfileError is already registered`

ruby-on-rails - 如何正确使用模拟?

ruby-on-rails - 如何使用 fabrication in rails 编写 factory_girl create 命令