Я создал приложение Rails с Devise.
Каждый пользователь должен иметь возможность отвечать на форму, которая заполняет модель Questionone
.Тем не менее, я продолжаю получать Couldn't find User without an ID
Что я сделал: rails generate scaffold Questionone first_question:text second_question:text user:references
В моем User.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :questionones
end
В моем Questionone.rb У меня есть:
class Questionone < ApplicationRecord
belongs_to :user
end
В моих questiones_controllers
before_action :set_questionone, only: [:show, :edit, :update, :destroy]
def new
@questionone = Questionone.new
@user = User.find(params[:user_id])
#If I use @user = current_user.id it works, but not sure if is right way
end
def create
@questionone = Questionone.new(questionone_params)
@questionone.user = User.find(params[:user_id])
@questionone.save
end
private
# Use callbacks to share common setup or constraints between actions.
def set_questionone
@questionone = Questionone.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def questionone_params
params.require(:questionone).permit(:user_id, :first_question, :second_question)
end
end
Если я использую raise
, он говорит мне, что@user
is nil
ЕСЛИ Я ИСПОЛЬЗУЮ @user = current_user.id , это работает, но я не уверен, что это правильный путь