【发布时间】:2015-03-01 18:12:08
【问题描述】:
在下面的示例中,我希望 abbr 只是 name 的前 3 个字母,但我得到一个 >> 未定义的局部变量 name... 我猜是因为 name 超出了范围{} 块?
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
【问题讨论】:
-
只需从您的 rails 控制台显示
Team.column_names的输出。只是为了确保您的Team模型中是否有name属性。 -
或者显示完整的错误堆栈
-
您的编辑现在有意义了,
-
试试
abbr { Fabricate.attributes_for(:team)[:name][0..2] },让我知道它是否适合你.. -
失败/错误:无法从回溯 SystemStackError 中找到匹配行:堆栈级别太深
标签: ruby rspec fabrication-gem