我收到此错误。
undefined method `email' for nil:NilClass
当我尝试访问我的相关模型记录时,如下所示:
用户模型:
has_one :facility
用户设施:
belongs_to :user
设施控制器
@adminfacilities = Facility.all
Index.html.erb
@adminfacilities.each do |facility|
facility.user.email
我不知道我在这里做错了什么。 为什么我不能访问这些信息?
非常感谢!
答案 0 :(得分:2)
由于某些facility.user
为nil
,您可以使用:
@adminfacilities.each do |facility|
facility.user.try(:email)
答案 1 :(得分:2)
正如xdazz所说,facility.user
是nil
。
也许您应该在Facility模型中添加验证
validates_presence_of :user
和销毁的依赖
belongs_to :user, :dependent => :destroy
答案 2 :(得分:1)
外键中可能有Facility
没有用户分配,当foreach
循环到达该工具时,它发现有因此,没有用户分配,它无法返回您要查找的用户属性,在本例中为email
。
检查您的数据库设施表,user_id
可能是nil
。
答案 3 :(得分:0)
代码本身看起来还不错。
我认为原因是您正在使用开发模式,并且没有创建正确的关联数据。
建议您再次检查数据以查看是否有任何设施记录没有user_id。
此外,强烈建议按照ForgetTheNorm的说法添加验证。
答案 4 :(得分:0)
某些相应的工厂没有用户,因此返回nil。
然后从用户表u或尝试访问电子邮件。所以它通过nil:NilClass(User nilclass)
的例外我们可以写一些像这样的最佳理解代码
facility.user? facility.user.email:nil #如果用户返回,它将设施用户在那里它会给用户发送电子邮件,否则它返回nil
(或)
facility.user.try(:电子邮件)