无法创建色器件

使用设备的任务,不能创建任务 我的模型 用户无法创建色器件

class User < ApplicationRecord 

# Include default devise modules. Others available are:

# :confirmable, :lockable, :timeoutable and :omniauthable

devise :database_authenticatable, :registerable,

:recoverable, :rememberable, :trackable, :validatable

has_many :tasks

end

任务

class Task < ApplicationRecord 

belongs_to :user

end

任务控制器

def create 

@task = Task.new(task_params)

respond_to do |format|

if @task.save

format.html { redirect_to @task, notice: 'Task was successfully created.' }

format.json { render :show, status: :created, location: @task }

else

format.html { render :new }

format.json { render json: @task.errors, status: :unprocessable_entity }

end

end

end

,并试图在创建任务有错误

1错误禁止被保存在这个任务:

User must exist 

我的反应

开始POST “/任务” 为127.0.0.1,在2017年12月27日14时20分59秒0200 处理由TasksController#创建以HTML 参数:{ “UTF8”=> “✓”, “authenticity_token”=> “b7EkQsJygYBW1xLIm1uFD8jluXy2LYeoYjAOjKcwWOMHLwtalXmkTrNJu0yhexucwY94COegDcuVrOWLRkf8dg ==”, “任务”=> { “标题”=> “”,“描述“=>”“,”优先“=>”“,”due(1i)“=>”2017“,”due(2i)“=>”12“,”due(3i)“=>”27“ ,“完成”=>“0”},“提交”=>“创建任务”}

User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] 

(0.0ms) begin transaction

(0.1ms) rollback transaction

怎么了?

回答:

更改belongs_to :userbelongs_to :user, optional: true。 Rails 5引入了关联中的默认验证。请参阅this link更好地理解

回答:

的方法创建控制器需要添加@task.user_id = current_user.id

回答:

要知道,工作是不是按照https://reservedwords.herokuapp.com/words/task?q[word_or_notes_cont]=task

在Rails的模型好名字没有保留字完整列表因为语言和框架的性质。但是,当你使用冲突的关键字时,有时你会面对奇怪的行为。

回答:

你丢失了user_id创建task

尝试以下

在你的代码

def create 

@task = Task.new(task_params)

respond_to do |format|

if @task.save

format.html { redirect_to @task, notice: 'Task was successfully created.' }

format.json { render :show, status: :created, location: @task }

else

format.html { render :new }

format.json { render json: @task.errors, status: :unprocessable_entity }

end

end

end

从您的代码修改,您可以使用

def create 

@task = Task.new(task_params)

@task.user = current_user

respond_to do |format|

if @task.save

format.html { redirect_to @task, notice: 'Task was successfully created.' }

format.json { render :show, status: :created, location: @task }

else

format.html { render :new }

format.json { render json: @task.errors, status: :unprocessable_entity }

end

end

end

希望帮助

以上是 无法创建色器件 的全部内容, 来源链接: utcz.com/qa/265051.html

回到顶部