对rails很新,我有一个允许用户登录并为项目创建截止日期的应用程序,我的问题是使用设计,我想设置它,以便在创建新的截止日期时将其分配给用户ID。我在我的new和create方法中尝试了以下内容:
class DeadlinesController < ApplicationController
def new
@deadline = current_user.deadlines.new
end
def create
@deadline = current_user.deadlines.new(params[:deadline].permit(:title, :date, :description))
if @deadline.save
redirect_to @deadline
else
render 'new'
end
end
def show
@deadline = Deadline.find(params[:id])
end
def edit
@deadline = Deadline.find(params[:id])
end
def index
@deadlines = Deadline.all
@deadlines = Deadline.paginate(:page => params[:page], :per_page => 5)
end
def update
@deadline = Deadline.find(params[:id])
if @deadline.update(params[:deadline].permit(:title, :date, :description))
redirect_to @deadline
else
render 'edit'
end
end
def destroy
@deadline = Deadline.find(params[:id])
@deadline.destroy
redirect_to deadlines_path
end
private
def post_params
params.require(:deadline).permit(:title, :date, :description)
end
end
当我尝试@deadline = current_user.deadlines.new
时,我误以为undefined method deadlines' for #<User:0x007fa37b6127d8>
?
答案 0 :(得分:2)
是的,您需要将user_id
列添加到截止日期表。
在终端中,导航到您的Rails应用并输入:
rails generate migration add_user_id_to_deadlines user_id:integer
这将自动创建一个在截止日期表中包含user_id
列的迁移。然后,您可以再次迁移数据库以添加最新更改:
rake db:migrate
同时修改截止日期.rb以包含belongs_to :user
和user.rb以包含has_many :deadlines