Ruby on rails 访问使用ActiveRecord.find找到的对象的属性

Ruby on rails 访问使用ActiveRecord.find找到的对象的属性,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在努力解决一个看似简单的概念。在使用ActiveRecord查询获取单个项后,我想访问该项的属性,但得到了nil:NilClass的未定义方法“msg” 我使用的模型如下所示: class Provider < ActiveRecord::Base attr_accessible :alias, :name validates :name, :presence => true has_many :histories def lastActive retu

我正在努力解决一个看似简单的概念。在使用ActiveRecord查询获取单个项后,我想访问该项的属性,但得到了nil:NilClass的未定义方法“msg”

我使用的模型如下所示:

class Provider < ActiveRecord::Base
  attr_accessible :alias, :name
  validates :name,  :presence => true
  has_many :histories

  def lastActive
   return History.where(:provider_id => self.id).last
  end
end
def last_active
  return histories.order(:id).last
end
我错过了什么?在执行Model.find.last之后,为什么我不能访问返回的模型的属性

在这样的情况下,我实际上只需要1个属性,这有什么问题:

Model.find.last.some_attribute

您肯定要删除该行:

attr_accessible :available, :msg
这是不对的,会引起问题

我不明白为什么它会为nil:NilClass错误提供一个未定义的方法'msg',但是把它取出来,看看是否可以修复它

而且,如果你得到的是最后一个,你不应该有一个订单方法

最后,一旦开始工作,由于您有历史关联,您可以按如下方式定义lastActive:

class Provider < ActiveRecord::Base
  attr_accessible :alias, :name
  validates :name,  :presence => true
  has_many :histories

  def lastActive
   return History.where(:provider_id => self.id).last
  end
end
def last_active
  return histories.order(:id).last
end

谢谢,但很抱歉,删除属性后没有区别。我的偏好是使用历史中声明的作用域来获取最新的1。我添加了def last_active作为一个备用的理智检查,但到目前为止仍然很困惑,但是这个。Ack!我发现了问题。有些提供商没有历史记录。所以,是的,有时会有一个零obj。啊!现在我用这个来处理nil的情况:欢迎其他想法
Model.find.last.some_attribute
attr_accessible :available, :msg
def last_active
  return histories.order(:id).last
end