0

そこで昨日、現在のユーザーのプロジェクトを取得することについて質問しました。さて、私は問題に遭遇しました。こちらのスレッドをご覧ください。そのため、今日は、ディスカッションとともに、ユーザーのカテゴリとタスクの表示に取り組んでいました。これを表示するためにページをロードすると、次のようになりました。

NoMethodError in UsersController#show

undefined method `projects' for #<User:0xad5823f4>
Rails.root: /home/adam/Documents/Aptana Studio 3 Workspace/StartPoint

Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:25:in `show'
Request

Parameters:

{"id"=>"4"}

これは現在、私のusers#showメソッドの内容です。

  def show
    @projects = current_user.projects
    @tasks = current_user.tasks
    @categories = current_user.categories
    @discussions = current_user.discussions
  end

テーブル名は、プロジェクト、タスク、カテゴリ、およびディスカッションです。他の場所でこれを使用しても問題はありませんが、なぜこのエラーが表示されるのですか?

さらにコードが必要な場合は、それを表示できます。エラーはかなり明確ですが、プロジェクトのカテゴリやタスクなどのプロジェクト固有の情報を表示する場所で、このタイプの呼び出しを使用します。ユーザーとカテゴリ、ディスカッション、タスクなどとの関係に何か関係があるのでしょうか。とりわけ、showメソッドにリストされている各テーブルにuser_idがあるためです。

また、私はこれについて考えました。今朝、このトピックについて話していたので、current_userは間違っているようです。これは、Bobsプロファイルをクリックすると、すべてのものが表示されないためです。ユーザーIDに固有のものではないでしょうか。

4

1 に答える 1

0

各モデルで関連付けを確立しましたか?

class User < ActiveRecord::Base
  has_many :projects
end

また、それcurrent_userが実際にはUserオブジェクトであり、シンプロキシではないことを確認してください。

通常、セッションユーザーと表示されたユーザーを区別する必要があります。これが、のような名前current_userが有害である理由です。session_userログインしたユーザーを参照し、表示されているユーザーを参照するためにを使用することをお勧めし@userます。

一部のログインシステムはcurrent_userメソッドのみを定義しますが、エイリアスを作成するのは難しくありません。その場合、それは設計上欠陥があるだけです。

于 2012-11-22T16:02:10.277 に答える