0
我只是不知道他们是为了什么。之前我认为他们很容易填充外键,但现在我发现情况并非如此。嵌套工厂的要点是什么?
# User attributes: id, name, password
factory :user_0, class: User do
id 0
name "Jimmy"
password "Jimson"
end
# Status attributes: id, user_id, content
factory :user_0_statuses, class: Status do
association :user, factory: :user_0
factory :user_0_status_0 do
id 0
content "noo"
end
factory :user_0_status_1 do
id 1
content "yees"
end
end
当:user_0_status_0和:user_0_status_1工厂都在一个规范.create
d,我认为这个工厂设置将在数据库中创建以下(注意状态user_id说明项):
users
id | name | password
0 | Jimmy | Jimson
statuses
id | user_id | content
0 | 0 | noo
1 | 0 | yees
但相反,它会创建这样的:
users
id | name | password
0 | Jimmy | Jimson
0 | Jimmy | Jimson
statuses
id | user_id | content
0 | nil | noo
1 | nil | yees
基本上,每一个嵌套的状态工厂创建的基础上,USER_0工厂一个全新的用户,并且用户_状态的ID根本没有设置。这种行为如何有用?
我根本看不到任何有关嵌套工厂的用法。它们是什么以及关联方法?
请使用有意义的变量名称而不是'user_0_something',很难知道你的意图。 –
我没有测试任何东西,所有我关心的问题是嵌套表对创建的过渡数据库条目的影响。 – Starkers
我知道你没有测试某些东西。我很难用这些变量名来理解这个问题,我不知道它们是什么。 –