0

所以我遇到了这个问题,试图弄清楚一旦用户完全注册并且仍然将该对象连接到用户ID,如何使用rails中的构建方法创建一个对象。我正在使用设计进行身份验证,需要创建的模型称为“应用程序”。

这是“app”的创建方法。

 def create
  @app = App.new(app_params)
  @app.id = current_user.id

    respond_to do |format|
      if @app.save
        format.html { redirect_to @app, notice: 'Application successfully created.'}
      else
        format.html { render action: 'new' }
      end
    end
  end

我收到此错误:找不到 id=1 的应用

从我的多步表单控制器:

def show
       @user = User.find(current_user)
          case step
        when :school, :grades, :extra_activity, :paragraph, :submit
        @app = App.find(current_user)
      end
        render_wizard
      end
4

2 回答 2

1

您的代码中的问题行在这里:

@app.id = current_user.id

设置 ActiveRecord 对象id是不行的。将属性想象为idC 中的指针。系统为您创建它,您可以使用它来引用唯一的模型对象。

您可能想要的是以下内容:

@app.user_id = current_user.id

或者,甚至更好:

@app.user = current_user

为此,您需要在 App 模型和 User 模型之间建立关联。这里有一个很好的教程

于 2013-09-01T23:36:50.127 回答
1

您需要after_create在 User 模型中进行回调。弄乱 AppController 是没有意义的,因为没有为应用程序填写任何表单,并且您没有 app_params。

class User < ActiveRecord::Base
  after_create :build_initial_app

  protected

  def build_initial_app
    self.create_app
  end
end

您可以在 Rails Guides 页面上了解更多关于ActiveRecord 回调的信息。

于 2013-09-01T23:38:16.553 回答