Ruby on rails 在另一个控制器内创建操作
我试图在我的请求类的控制器中创建一个新用户,但遇到了一些困难。下面是我在请求控制器中的“创建”操作。我意识到我不能只给User.new打电话,但我不确定如何构造正确的POST操作Ruby on rails 在另一个控制器内创建操作,ruby-on-rails,controller,models,rails-models,Ruby On Rails,Controller,Models,Rails Models,我试图在我的请求类的控制器中创建一个新用户,但遇到了一些困难。下面是我在请求控制器中的“创建”操作。我意识到我不能只给User.new打电话,但我不确定如何构造正确的POST操作 def create @request = Request.new(params[:request]) @user = User.find_by_email(@request.email) if @user.present? @request.user_id = @user.id @requ
def create
@request = Request.new(params[:request])
@user = User.find_by_email(@request.email)
if @user.present?
@request.user_id = @user.id
@request.save
else
user = User.new
user.email = @request.email
user.zip = @request.zip
user.save
@request.user_id = user.id
@request.save
end
respond_to do |format|
if @request.save
UserMailer.request_confirmation(@request).deliver
UserMailer.request_notification(@request).deliver
format.html { redirect_to confirmation_url }
format.json { render json: @request, status: :created, location: @request }
else
format.html { render action: "new" }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
我不确定您的问题是什么,但您不必调用User create POST action(来自用户控制器的操作)来创建用户 User.create—“create”是来自ActiveRecord::Base的方法,而不是来自UserController 在一个操作(例如请求创建操作)中,您可以创建多个ActiveRecord对象,无论它们是什么类 在rails中创建数据库实体有多种方法。它们可以从模型、控制器和其他调用
@u = User.new
@u.save! # try to save object in DB, if something goes wrong, throws exception
@u = User.create! # creates empty user object in database, '!' causes that if something goes wrong, create throws exception
@u = User.create # it won't throw exception even if object is invalid
@u = User.new
@u.email = @request.email
if @u.save
# ok, it's in DB
else
# something goes wrong, e.g. rails validations
end
您是否收到任何错误消息?我是否遗漏了什么,或者为什么
请求
与用户
具有相同的属性?(电子邮件,zip)是的,这两个模型之间有关系吗?这是请求控制器,而不是用户控制器