【问题标题】:FactoryGirl - using traits not giving expecting resultFactoryGirl - 使用没有给出预期结果的特征
【发布时间】:2015-09-19 09:35:22
【问题描述】:

当我以这种方式定义我的用户工厂时

  FactoryGirl.define do
    factory :user do
      roles {[FactoryGirl.create(:role, :system, :admin)]}
      email "visitor.administration@example.com"
      name  "Visitor Administration"
      password "visitor123"
    end
  end

具有以下角色工厂:

    FactoryGirl.define do
      factory :role do
        company "internal"
        group "administration"
        function "visitor"
        activities '{}'
      end
      trait :system do
        group "system"
      end
      trait :admin do
        function "admin"
        activities '{"sheet" => ["create", "update", "delete", "show", "index"] }'
      end  
    end

执行

FactoryGirl.create(:user)

给了我预期的结果......

但是如果我尝试在用户工厂中定义一个特征

  FactoryGirl.define do
    factory :user do
      roles {[FactoryGirl.create(:role)]}
      email "visitor.administration@example.com"
      name  "Visitor Administration"
      password "visitor123"

      trait :system_admin do
        roles {[FactoryGirl.create(:role, :system, :admin)]}
        email "admin.system@example.com"
        name  "Admin System"
        password "admin123"
      end
      factory :system_admin_user,  traits: [:system_admin ] 
    end
  end

我现在执行:

user = FactoryGirl.create(:system_admin_user)

然后我得到一个错误:

    (0.3ms)  BEGIN
      SQL (5.4ms)  INSERT INTO "roles" ("group", "function", "activities", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["group", "system"], ["function", "admin"], ["activities", nil], ["created_at", "2015-09-19 09:08:19.572605"], ["updated_at", "2015-09-19 09:08:19.572605"]]
    PG::NotNullViolation: ERROR:  null value in column "activities" violates not-null constraint
    DETAIL:  Failing row contains (14, internal, system, admin, null, 2015-09-19 09:08:19.572605, 2015-09-19 09:08:19.572605).

活动 JSON 字段是否定义不正确?

【问题讨论】:

    标签: ruby-on-rails-4 factory-bot


    【解决方案1】:

    是的,activity属性写不正确:

    activities '{"sheet" => ["create", "update", "delete", "show", "index"] }'
    

    应该是:

    activities {{ sheet: ["create", "update", "delete", "show", "index"] }}

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2021-01-06
      • 2018-12-08
      相关资源
      最近更新 更多