【发布时间】:2016-11-09 02:23:28
【问题描述】:
我有一个Task 和一个Tick。用户创建Task后,我想自动创建Tick。
def create
@task = current_user.tasks.build(task_params)
@task.category_id = params[:category_id]
respond_to do |format|
if @task.save
format.html { redirect_to tasks_path, notice: 'Task was successfully created.' }
# @task.ticks.build(user_id: @user, complete: false) # doesn't create tick, but shows no error
# Tick.create(user_id: @user.id, tick_id: @tick.id, complete: false) #error: undefined method `id' for nil:NilClass
else
format.html { render :new }
end
end
end
勾选模型:
class Tick < ApplicationRecord
belongs_to :task
belongs_to :user
end
任务模型
class Task < ApplicationRecord
belongs_to :user
belongs_to :category
has_many :ticks
end
我已经尝试了this similar question的所有答案:
这个,在respond_to do |format|上面一行
@task.ticks.build(user_id: @user, complete: false)
(在 Tasks#create 中抛出 NoMethodError ... undefined method `map' for nil:NilClass)
if @task.save 之后我有这些
@task.ticks.build(user_id: @user, complete: false)
(不创建刻度,但没有显示错误)
Tick.create(user_id: @user.id, tick_id: @tick.id, complete: false)
(抛出错误:nil:NilClass 的未定义方法 `id')
另外,我正在尝试做的事情有技术名称吗?
【问题讨论】:
-
试试这个
@task.ticks.create(user_id: current_user.id, complete: false) -
已解决 @sa77 — 感谢伙伴
标签: ruby-on-rails