0

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

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

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

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

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

还有一个拥有_many Profiles的模范城市

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

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

4

1 回答 1

2

那是因为你没有Profile那个User(ie) @user.profileis nil。所以你需要先创建profileforuser和 do @user.profile.city。它会起作用的。如果您认为profile可能nil仍然想要获取某些记录cityprofile那么您可以使用try.

    @user.profile.try(:city)
于 2013-03-08T18:28:27.027 回答