0

したがって、ユーザーが完全に登録し、そのオブジェクトをユーザーIDに接続したまま、レールでビルドメソッドを使用してオブジェクトを作成する方法を理解しようとして、この問題が発生しています。認証にdeviseを使用しており、作成する必要があるモデルは「アプリ」と呼ばれます。

「アプリ」の作成方法です。

 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です。id属性は、C のポインターのようなものだと考えてください。システムによって属性が作成され、それを使用して一意のモデル オブジェクトを参照できます。

おそらく必要なのは、次のようなものです。

@app.user_id = current_user.id

または、さらに良い:

@app.user = current_user

そのためには、App モデルと User モデルの間の関連付けを設定する必要があります。ここに良いチュートリアルがあります。

于 2013-09-01T23:36:50.127 に答える
1

after_createUser モデルにコールバックが必要です。アプリ用のフォームが入力されておらず、app_params がないため、AppController をいじっても意味がありません。

class User < ActiveRecord::Base
  after_create :build_initial_app

  protected

  def build_initial_app
    self.create_app
  end
end

詳細については、ActiveRecord コールバックの Rails ガイド ページを参照してください。

于 2013-09-01T23:38:16.553 に答える