0

みんな私は次のようにApplicationControllerのヘルパーメソッドを持っています

class ApplicationController < ActionController::Base
  helper_method :current_user
end

そして、私はそれを私のモデル(たとえばプロジェクト)で次のように呼びたいと思います:

class Project < ActiveRecord::Base
  after_save :update_other_tables

  private

  def update_other_tables
  # if project saves, Create a new insteance into User Projects
  @userproject=UserProject.new(
   :user_id=>User.current_user.id,
   :project_id=>self.id
  )
  @userproject.save
end

ここで、未定義のメソッド `current_user'のようなエラーが発生します 。では、モデルでこのメソッドを呼び出す方法は?私を助けてください

4

2 に答える 2

1

私は次のようにします:

class ApplicationController < ActionController::Base
  # Assignment method
  def current_user=(user)
    @current_user = user
  end

  # Returns the current user, nil otherwise
  def current_user
    @current_user
  end
end

ユーザーがログインすると、次のように設定できます。 current_user = the_user

そして、その時点から、次のことができます。 current_user.id

お役に立てれば。

于 2012-06-16T13:26:41.447 に答える
0

ルビーの男ではありませんが、ここのユーザーはコントローラーの名前空間に存在するユーザーを参照していないと思います。そのため、オブジェクトにcurrent_userメソッドがありません。おそらくUserオブジェクトをヘルパーメソッドに渡す必要があります。 IDを渡すだけです。

上記の理論は、.Net MVCで同様のことを扱った私の経験に基づいているため、間違っている場合は訂正してください。回答を削除します。

PS:コメントが長すぎた

于 2012-06-16T10:11:23.443 に答える