Ruby on rails 4 工厂女工-使用未产生预期结果的特征
当我这样定义我的用户工厂时Ruby on rails 4 工厂女工-使用未产生预期结果的特征,ruby-on-rails-4,factory-bot,Ruby On Rails 4,Factory Bot,当我这样定义我的用户工厂时 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 :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字段是否定义错误 是,活动属性未正确写入:
activities '{"sheet" => ["create", "update", "delete", "show", "index"] }'
应该是:
活动{工作表:[“创建”、“更新”、“删除”、“显示”、“索引”]}