考虑以下几点:
class Manager < ActiveRecord::Base
has_many :employees
end
class Employee < ActiveRecord::Base
belongs_to :manager
end
employee = Employee.first
puts employee.manager.name
如果由于某种原因员工没有经理,我会得到这个:
undefined method `name' for nil:NilClass
这是有道理的。但是,有没有一种干净/建议的方法来处理这个问题,这样我就不必总是在询问经理的姓名之前检查并查看员工是否真的有经理?</p>
最佳答案
尝试:
puts employee.manager.name unless employee.manager.nil?
或者:
puts (employee.manager.nil? ? "No manager" : employee.manager.name)
在这种情况下相当于:
puts (employee.manager ? employee.manager.name : "No manager")
(等同于employee.manager不能返回false。)
关于ruby-on-rails - ActiveRecord 关系 : undefined method for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450698/