2

我是 Rails 新手,需要您的帮助来解决应该是一个简单的问题。

当我运行此代码时:

@search = User.search(params[:search])
@foundusers = @search.all.paginate :page => params[:page], :per_page => 20
@user = @search.where("users.id = ?", params[:id])
if @user.nil?
  @user = @foundusers.first
end
unless @user.company_id.nil?
  @company = Company.find(@user.company_id)
end

我收到以下错误声明:未定义的方法 `company_id' for #

我不明白,因为数据库上的查询是正确的(SELECT users.* FROM users LEFT OUTER JOIN Companies ON Companies.id = users.company_id WHERE ((((users.firstname LIKE '%s%' OR users.lastname LIKE '% s%') OR Companies.name LIKE '%s%')) AND (users.id = '11'))

并且该用户的 company_id 不为空。

当我输入 puts @user.name 时,它​​没有给我用户名,而是给了我“用户”

非常感谢您的帮助。

4

2 回答 2

0

尽管您的数据库“users”表有一个名为“company_id”的列,但User模型有一个名为“company”的属性。

除非@user.company_id.nil 试试?@company = Company.find(@user.company.id) 结束

于 2011-05-23T15:06:25.280 回答
0

谢谢你的帮助。实际上,我通过将模型名称@user 更改为@myuser 解决了这个问题。我没有改变任何其他东西,它的工作原理。我的猜测是这个问题是由设计插件引起的,但这只是一个猜测......

干杯。

于 2011-05-24T06:47:57.500 回答