我想确保在前端创建记录时,创建该记录的用户的用户ID自动分配给该记录。如果要在创建记录时将授权用户的ID自动分配给记录,该怎么办?对于授权,我使用gem'devise_token_auth'。
notebooks_controller.rb:
class NotebooksController < ApplicationController
before_action :set_notebook, only: [:show, :update, :destroy]
def index
@notebooks = Notebook.all
render json: @notebooks
end
def show
render json: @notebook
end
def create
@notebook = Notebook.new(notebooks_params)
if @notebook.save
render json: @notebook, status: :created, location: @notebook
else
render json: @notebook.errors, status: :unprocessable_entity
end
end
def update
if @notebook.update(notebooks_params)
render json: @notebook
else
render json: @notebook.errors, status: :unprocessable_entity
end
end
def destroy
@spr_contract_solution.destroy
end
private
def set_notebook
@notebook = Notebook.find(params[:id])
end
def notebooks_params
params.require(:notebook).permit!
end
end
notebook.rb:
class Notebook < ApplicationRecord
belongs_to :user
end
....__ create_notebooks.rb
class CreateNotebooks < ActiveRecord::Migration[5.1]
def change
create_table :notebooks do |t|
t.string :title
t.text :description
t.boolean :is_active
t.references :user, foreign_key: true
t.timestamps
end
end
end
答案 0 :(得分:2)
首先,@ Subash是正确的,您需要将参数列表传递给permit
中的notebook_params
方法(请注意,也许您想使用permit
而不是{{ 1}}),例如:
permit!
然后,要回答您的问题,您可以在params.require(:notebook).permit :name, :text, :any_other_attribute_you_are_saving
操作中执行以下操作:
create
答案 1 :(得分:2)
假设您的用户模型中有has_many :notebooks
,这是一种流行的习惯用法,可以用来做您想做的事情:
@notebook = current_user.notebooks.build(notebook_params)
答案 2 :(得分:0)
添加
@notebook.user = current_user
之后
@notebook = Notebook.new(notebooks_params)