我正在尝试从关联模型中获取模型Method返回信息。它在Rails控制台上没有任何问题,并且当它作为Web服务器运行时也在控制台上输出信息。
对我而言似乎并不困难。但它不起作用。
class Computer < ActiveRecord::Base
has_many :ip_addresses
has_one :status
def first_ip
@computer = Computer.find(self.id)
@computer.ip_addresses.first.ip
end
end
class IpAddress < ActiveRecord::Base
attr_accessible :ip
belongs_to :computers
end
[2011-10-10 16:09:02] ERROR ActionView::Template::Error: undefined method `ip' for nil:NilClass
/usr/local/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/whiny_nil.rb:48:in `method_missing'
/Users/robertg/RubymineProjects/CMDBTEST/app/models/computer.rb:7:in `first_ip'
由于
答案 0 :(得分:2)
这样做:
class Computer < ActiveRecord::Base
has_many :ip_addresses
has_one :status
def first_ip
first_ip_address = ip_addresses.first
first_ip_address ? first_ip_address.ip : nil
end
end
使用您的方法,如果Computer
没有ip_addresses
,则调用.first
将返回nil
,而ip
没有NilClass
方法1}}(就像错误说的那样)。这样,它会检查是否有ip_addresses
,如果是,则返回第一个ip
的{{1}},否则返回nil。