Rails无法浏览具有活动记录的模型

时间:2013-03-08 18:16:24

标签: ruby-on-rails activerecord ruby-on-rails-3.2

我不明白为什么我无法使用activerecord浏览我的模型。

我有一个用户模型has_one个人资料(实际上是用户的详细信息)

class User < ActiveRecord::Base
  has_one :profile, :dependent => :destroy 
end

属于用户和城市的模型配置文件

class Profile < ActiveRecord::Base
  belongs_to :user
  belongs_to :city
end

还有一个具有多种配置文件的模型城市

class City < ActiveRecord::Base
  belongs_to :country
  has_many :profiles  
end

在我的user_controller中,我可以像这样访问个人资料:

@user = User.find(params[:id])
logger.info(@user.profile.inspect)

但我不能这样深入:

@user = User.find(params[:id])
logger.info(@user.profile.city.inspect)

返回

undefined method `city' for nil:NilClass

我想得到的是来自存储在个人资料模型中的city_id的城市名称。 有人可以向我解释我做错了什么吗? 感谢

1 个答案:

答案 0 :(得分:2)

这是因为Profile(即{}} User @user.profile nil没有profile。因此,您需要先为user创建@user.profile.city并执行profile。它会工作。如果您认为nil对于某些记录可能city仍然希望profile获得try的记录,那么您可以使用 @user.profile.try(:city)

{{1}}