Rails4 - 为结果添加方法

时间:2014-06-17 18:08:32

标签: ruby-on-rails-4

让我们说个人表/模型有id和名字:

class Person < ActiveRecord::Base

  def height
    return '10 feet tall'
  end

end

如何让它返回高度&#39;结果中的方法,而不是这个:

=> #<Person id: 1, name: "bob">

就是这样:

=> #<Person id: 1, name: "bob", height: "10 feet tall">

2 个答案:

答案 0 :(得分:0)

您可以通过attr_accessor方法使用ruby类属性。但它不是DB中的真正领域。例如,您需要使用像这样的字段高度

class Person < ActiveRecord::Base 

  attr_accessor :height 
  def height 
    return @height
  end 
  def height=(val)
    @height = val
  end
end 

你可以像使用它一样使用它(例如,如果你有身份1的人)

Person.find(1).height

答案 1 :(得分:0)

以下似乎有用:

attr_accessor :height

def attributes
    super.merge('height' => self.height)
end

def height
    '10 feet tall'
end

有没有更好的最小代码方式来做到这一点?