0

现在我在模型中的 as_json 方法中有以下内容:

  #values we will pass to Json
  def as_json(options={})
    super(:only => [:name, :last_name, :age])
  end

我有一个方法可以执行一些逻辑并返回一个值:

def self.full_name
 self.name + self.last_name
end

如何在 as_json 中返回“选项”结果以及我已经拥有的字段?我试过这个:

#values we will pass to Json
  def as_json(options={})
    super(:only => [:name, :full_name => self.full_name, :last_name, :age])
  end

没有运气。

4

2 回答 2

3

Shadwell 的回答是完全正确的。但是,我认为您可以:methods像这样使用密钥:

def as_json(options={})
    super(:only => [:name, :last_name, :age], :methods => [:full_name])
end
于 2013-01-22T20:05:54.800 回答
0
def as_json(options = {})
  super(:only => [:name, :last_name, :age]).merge(
    { :full_name => self.full_name }.as_json
  )
end

这使用模型属性的默认实现,然后合并到您的派生属性中。

于 2013-01-22T19:52:42.973 回答