【发布时间】:2020-05-25 00:55:52
【问题描述】:
我正在尝试像这样在 FactoryBot 中定义 lambda...
contact_methods = %w[Phone Email Snail\ Mail Carrier\ Pigeon]
factory :my_object do
transient do
remove_used_value = -> (x,y) { x.reject { |a| a == y }.sample }
end
first_contact_option { contact_methods.sample }
second_contact_option { remove_used_value.call(contact_methods,first_contact_option) }
end
但是,当我运行 FactoryBot.create(:my_object) 时,我收到错误 undefined method remove_used_value for #<FactoryBot::SyntaxRunner:0x00007fb2ac238960>
我将其定义为 lambda,因为在 Bot 中还有其他几个需要相同功能的字段。奇怪的是,这在昨天工作得很好,除了 lambda 中的逻辑没有返回预期的结果。在重新编写逻辑并在 CLI 中测试 lambda 之后,我发现了可行的逻辑,但突然之间它无法识别 lambda 存在。
我的定义有问题吗?另外,有没有更喜欢的方式来做这样的事情?
【问题讨论】:
标签: ruby-on-rails ruby rspec factory-bot