Задача
У меня есть простая модель, которая требует только поля заголовка. В его контроллере я просто создаю новую модель, используя это поле. Звучит просто, но когда я запускаю его на Heroku и делаю запрос на публикацию с полем заголовка, он не попадает в контроллер. Кажется, это происходит только на Heroku, потому что локально все работает нормально.
Миграция базы данных
class CreateFolders < ActiveRecord::Migration[5.2]
def change
create_table :folders do |t|
t.string :title
t.belongs_to :user, index: true
t.timestamps
end
end
end
Контроллер
class FoldersController < ApplicationController
before_action :set_folder, only: [:show, :update, :destroy]
# GET /folders
# GET /folders.json
def index
@folders = Folder.all
end
# GET /folders/1
# GET /folders/1.json
def show
end
# POST /folders
# POST /folders.json
def create
@folder = Folder.new(folder_params)
if @folder.save
render :show, status: :created
else
render json: @folder.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /folders/1
# PATCH/PUT /folders/1.json
def update
if @folder.update(folder_params)
render :show, status: :ok
else
render json: @folder.errors, status: :unprocessable_entity
end
end
# DELETE /folders/1
# DELETE /folders/1.json
def destroy
@folder.destroy
end
private
def set_folder
begin
@folder = Folder.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
render json: {
error: e.to_s
}, status: :not_found
end
end
def folder_params
params.permit(:title).merge(user_id: current_resource_owner.id)
end
end
JBuilder Show View
json.partial! "folders/folder", folder: @folder
JBuilder _folder View
json.extract! folder, :id, :title, :bookmarks, :created_at, :updated_at
Запрос
{
"title": "Folder11111"
}
Ответ
{
"id": 3,
"title": null,
"bookmarks": [],
"created_at": "2018-10-26T11:01:45.779Z",
"updated_at": "2018-10-26T11:01:45.779Z"
}
Heroku Logs
2018-10-26T11:01:44.992078+00:00 app[web.1]: I, [2018-10-26T11:01:44.991941 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Processing by FoldersController#create as */*
2018-10-26T11:01:44.992913+00:00 app[web.1]: I, [2018-10-26T11:01:44.992846 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Parameters: {"{\n\t\"title\": \"Folder11111\"\n}"=>nil}
2018-10-26T11:01:45.092909+00:00 app[web.1]: D, [2018-10-26T11:01:45.092760 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Doorkeeper::AccessToken Load (1.5ms) SELECT "oauth_access_tokens".* FROM "oauth_access_tokens" WHERE "oauth_access_tokens"."token" = $1 LIMIT $2 [["token", "dec5088a6683b40c4e1a1a855ec276f583146ac2df5c613f903395bcc46b32a6"], ["LIMIT", 1]]
2018-10-26T11:01:45.437424+00:00 app[web.1]: D, [2018-10-26T11:01:45.437211 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] User Load (6.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
2018-10-26T11:01:45.832660+00:00 heroku[router]: at=info method=POST path="/api/users/folders" host=pando-api-staging.herokuapp.com request_id=00a631b5-33c7-4c5f-8b25-d74fced5fb25 fwd="37.189.130.169" dyno=web.1 connect=1ms service=862ms status=201 bytes=428 protocol=https
2018-10-26T11:01:45.719016+00:00 app[web.1]: D, [2018-10-26T11:01:45.718863 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] CACHE User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
2018-10-26T11:01:45.745984+00:00 app[web.1]: {
2018-10-26T11:01:45.745988+00:00 app[web.1]: "user_id" => 1
2018-10-26T11:01:45.745989+00:00 app[web.1]: }
2018-10-26T11:01:45.756775+00:00 app[web.1]: D, [2018-10-26T11:01:45.756646 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] (3.0ms) BEGIN
2018-10-26T11:01:45.768135+00:00 app[web.1]: D, [2018-10-26T11:01:45.768018 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] CACHE User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
2018-10-26T11:01:45.786484+00:00 app[web.1]: D, [2018-10-26T11:01:45.786355 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Folder Create (5.8ms) INSERT INTO "folders" ("user_id", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["user_id", 1], ["created_at", "2018-10-26 11:01:45.779279"], ["updated_at", "2018-10-26 11:01:45.779279"]]
2018-10-26T11:01:45.791620+00:00 app[web.1]: D, [2018-10-26T11:01:45.791129 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] (2.0ms) COMMIT
2018-10-26T11:01:45.809744+00:00 app[web.1]: I, [2018-10-26T11:01:45.809613 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Rendering folders/show.json.jbuilder
2018-10-26T11:01:45.819619+00:00 app[web.1]: I, [2018-10-26T11:01:45.818985 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Rendered folders/_folder.json.jbuilder (3.5ms)
2018-10-26T11:01:45.830236+00:00 app[web.1]: D, [2018-10-26T11:01:45.830109 #4] DEBUG -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Bookmark Load (0.8ms) SELECT "bookmarks".* FROM "bookmarks" WHERE "bookmarks"."folder_id" = $1 [["folder_id", 3]]
2018-10-26T11:01:45.831048+00:00 app[web.1]: I, [2018-10-26T11:01:45.830979 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Rendered folders/show.json.jbuilder (20.8ms)
2018-10-26T11:01:45.831564+00:00 app[web.1]: I, [2018-10-26T11:01:45.831487 #4] INFO -- : [00a631b5-33c7-4c5f-8b25-d74fced5fb25] Completed 201 Created in 838ms (Views: 34.6ms | ActiveRecord: 155.7ms)