未能填充列'方法'在工厂

时间:2014-10-13 22:28:22

标签: ruby factory-bot factories

我需要为数据库表定义一个工厂,该工作表包含名为' 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 })

在哪里可以避免这种破解并在工厂中正确定义此列?

1 个答案:

答案 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