如何在Sinatra获得后期路线的身份证明

时间:2016-02-29 21:54:56

标签: ruby sinatra

我有一个创建学生的工厂。所有必填字段都在工厂中填写和创建。当我发布一个新学生时,我从来没有得到那个学生,只是在工厂创建的那个学生?如何从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

1 个答案:

答案 0 :(得分:1)

在没有看到路线的情况下,我无法确定,但在我看来,您在路线中一次调用POST,在params散列内调用一次。但是,如果没有看到您的路线,我无法确定这是否是一个问题。

另一个想法是阅读你的规范。您是在尝试创建新学生(POST)还是在尝试编辑学生?如果您正在尝试编辑现有学生,则应该通过RESTful约定引用单独的路由,PUT或PATCH。如上所述,POST路由不需要id,正是因为它创建了一个新学生,它将创建id,而id由数据库设置,而不是手动设置。

对上述内容的引用:http://guides.rubyonrails.org/v2.3.11/routing.html

我希望这至少指向正确的方向。 :d