mysql - 与 Rails 反应 - 在服务器日志中回滚
问题描述
我有个问题。与数据库有关,因为在此之前我不明白迁移是什么。当我运行服务器时,数据库出现错误log_subscriber.rb:98
,没有数据传输到前端,尽管在此之前一切正常。互联网上没有答案。
(2.5ms) SELECT "schema_migrations"."version" FROM
"schema_migrations" ORDER BY "schema_migrations"."version" ASC
↳ /home/vitalii/.ruby/gems/activerecord-
5.2.2/lib/active_record/log_subscriber.rb:98
Started POST "/tasks/" for ::1 at 2019-02-17 18:09:51 +0200
(1.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
↳ /home/vitalii/.ruby/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98
Processing by TasksController#create as HTML
Parameters: {"title"=>"Text", "description"=>"Text", "priority"=>"1", "active"=>true, "due_date"=>"2019-02-28", "task"=>{"title"=>"Text", "description"=>"Text", "priority"=>"1", "active"=>true, "due_date"=>"2019-02-28"}}
(0.3ms) BEGIN
↳ app/controllers/tasks_controller.rb:15
(1.5ms) ROLLBACK
↳ app/controllers/tasks_controller.rb:15
Completed 200 OK in 156ms (Views: 0.9ms | ActiveRecord: 7.1ms)
我的任务控制器
class TasksController < ApplicationController
def create
@task = Task.create(task_params)
render json: @task
end
private
def task_params
params.require(:task).permit(:title, :description, :priority, :active, :due_date)
end
end
解决方案
很可能您的Task
模型会默默地失败。如果存在验证,并且给定的输入不满足您的验证规则,则持久化将不会成功。所以使用@task = Task.create!(task_params)
散列爆炸而不是@task = Task.create(task_params)
.
最有效的方法是:
def create
@task = Task.new(task_params)
@task.save ? head(:created) : (render json: @task.errors)
end
推荐阅读
- python-3.x - 如何在 python3 中绘制简单的 3d 轴?
- html - 如何使用具有相同数据目标的两个按钮的引导折叠并且如果被另一个按钮激活则不折叠?
- node.js - 需要有关 RouterDialog、Skill State、SkillContext 和 SemanticAction 类的文档
- android - 如何检查 MIT AI2 中的文档加载是否完成?
- sql - Marklogic SQL93 和日期比较
- woocommerce - Woocommerce:我如何从购物车中删除特定产品然后清空购物车?
- python - Prime numbers using sieve of erathosthenes
- regex - 出于管理目的将 /etc/shadow 中的密码替换为屏蔽文本
- compiler-errors - ld:找不到-lSystem collect2的库:错误:ld返回1退出状态gfortran
- python-3.x - 刮硒保护地