我需要为数据库表定义一个工厂,该工作表包含名为' method'。
的列。我尝试过这样的事情:
FactoryGirl.define do
factory :notification_baby_offset, class:'NotificationTemplate' do
...
method {{ 'email' => false, 'notification' => true }}
...
end
end
但是,当我尝试构建它时,我收到一条错误说:
`method': wrong number of arguments (0 for 1) (ArgumentError)
似乎确定了'方法'作为函数而不是数据库列。我试图通过:method
或"method"
强调这一点,但这不起作用。
所以,我必须像这样建立这个工厂才能工作:
FactoryGirl.create(:notification_baby_offset, method: { 'email' => false, 'notification' => true })
在哪里可以避免这种破解并在工厂中正确定义此列?
答案 0 :(得分:0)
试试这个:
FactoryGirl.define do
factory :notification_baby_offset, class:'NotificationTemplate' do
...
after(:build) do |notification|
notification.method = { 'email' => false, 'notification' => true }
end
...
end
end
甚至(如果您的new
支持传递属性):
FactoryGirl.define do
factory :notification_baby_offset, class:'NotificationTemplate' do
...
initialize_with { new(method: { 'email' => false, 'notification' => true }) }
...
end
end