has_many协会rails

时间:2011-05-08 00:25:32

标签: ruby-on-rails-3 activerecord has-many

我有一个User模型和一个Job_Category模型,Job_Category模型

belongs_to :user

用户模型

has_many :job_categories, :dependent => :destroy   

我有一个仪表板控制器,我正在尝试显示特定登录用户的所有Job_Categories。

class DashboardController < ApplicationController
before_filter :authenticate_user!


def index
 @user = User.find(params[:id])
 @job_categories = @user.job_categories


 #@job_categories = JobCategory.all

 #respond_to do |format|
#   format.html # index.html.erb
#   format.xml  { render :xml => @job_categories }
# end

end

然而,当我试图显示这个时,我收到错误'找不到没有ID的用户'。我在日志中看到了这一点:

由DashboardController #index处理为HTML   用户负载(0.3ms)SELECT“users”。* FROM“users”WHERE(“users”。“id”= 2)LIMIT 1 在22ms完成

ActiveRecord :: RecordNotFound(找不到没有ID的用户):   app / controllers / dashboard_controller.rb:9:在`index'

1 个答案:

答案 0 :(得分:1)

首先,你不能试图在控制台中找到params,因为没有这样的东西。

在控制台中尝试:

  

User.find(2)

(.. find方法看起来值的默认列是主键,我假设它是正常的id)

然后另一件事,如果你已经在before_filter中验证了用户,你可能已经有了@current_user或者其他东西,你是否正在使用某些认证插件,如设计或其他东西?因此,无需将当前用户ID传递给仪表板控制器。应用程序控制器已经知道该用户是谁,并且您的仪表板控制器是它的子类。

确保您的job_category表也有user_id列。