我有一个创建学生的工厂。所有必填字段都在工厂中填写和创建。当我发布一个新学生时,我从来没有得到那个学生,只是在工厂创建的那个学生?如何从POST中获取新学生的ID?
students.rb
{
"storeName": "my store",
"items": [
{
"uniqueName": "Hammer",
"num": "12345qwert"
},
{
"uniqueName": "Bike",
"num": "asdfghhj"
},
{
"uniqueName": "Bike",
"num": "zxcvbn"
},
{
"uniqueName": "Fork",
"num": "0987dfgh"
}
]
}
student_spec.rb
FactoryGirl.define do
factory :student do
sequence(:id)
sequence(:first_name){|n| "Tom"}
sequence(:last_name) {|n| "Dick"}
sequence(:password) {|n| "test"}
sequence(:email){ |n| "person#{n}@example.com" }
school
end
end
答案 0 :(得分:1)
在没有看到路线的情况下,我无法确定,但在我看来,您在路线中一次调用POST,在params散列内调用一次。但是,如果没有看到您的路线,我无法确定这是否是一个问题。
另一个想法是阅读你的规范。您是在尝试创建新学生(POST)还是在尝试编辑学生?如果您正在尝试编辑现有学生,则应该通过RESTful约定引用单独的路由,PUT或PATCH。如上所述,POST路由不需要id,正是因为它创建了一个新学生,它将创建id,而id由数据库设置,而不是手动设置。
对上述内容的引用:http://guides.rubyonrails.org/v2.3.11/routing.html
我希望这至少指向正确的方向。 :d