0
ユーザーがwww.example.com/personal_messages/newにアクセスしたときに、新しいアカウントではなく、ユーザーがそれを送信したとき。しかし、問題は、User.create関数を動かすとエラーが出るということです。これには回避策がありますか?RoR - ユーザーが新しいページに移動したときではなく、作成時にユーザーを作成する
personal_messagesあなたnew
アクションでコントローラ
class PersonalMessagesController < ApplicationController
before_action :check_receiver!, only: [:new, :create]
def new
redirect_to conversation_path(@conversation) and return if @conversation
@personal_message = current_user.personal_messages.build
end
def create
@conversation ||= Conversation.create(author_id: cookies[:user_id],
receiver_id: @receiver)
@personal_message = current_user.personal_messages.build(personal_message_params)
@personal_message.conversation_id = @conversation.id
@personal_message.save!
flash[:success] = "ok!"
redirect_to conversation_path(@conversation)
end
private
def personal_message_params
params.require(:personal_message).permit(:body)
end
def check_receiver!
@ip = request.remote_ip
if cookies[:user_id].blank?
@user = User.create(email: "thinkrtcvisitor-#{rand(999999)}@visitor.com", ip_address: @ip, password: '12345678', password_confirmation: '12345678')
@user.save!
cookies.permanent[:user_id] = @user.id
cookies.permanent[:current_user_cookie] = User.find_by_id(cookies[:user_id])
session[:user_id] = @user.id
end
@receiver = cookies[:site_id]
@conversation = Conversation.between(cookies[:user_id], @receiver)[0]
end
end
これは多少動作しているようですが、彼らは/ personal_messages /新 EDITに行くとき今、ユーザーがリダイレクトされていません。また、私は@personal_message = PersonalMmessage.newを試してみましたが、この作品。 – Raidspec
'build'と' new'はちょうど別名です、http://apidock.com/rails/ActiveRecord/Relation/build – Iceman