我不明白为什么我无法使用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的城市名称。 有人可以向我解释我做错了什么吗? 感谢
答案 0 :(得分:2)
这是因为Profile
(即{}} User
@user.profile
nil
没有profile
。因此,您需要先为user
创建@user.profile.city
并执行profile
。它会工作。如果您认为nil
对于某些记录可能city
仍然希望profile
获得try
的记录,那么您可以使用 @user.profile.try(:city)
。
{{1}}