在as_json中使用方法结果

时间:2013-01-22 19:38:44

标签: ruby-on-rails json model

现在我在模型中的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中返回“options”结果以及我已有的字段?我试过这个:

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

没有运气。

2 个答案:

答案 0 :(得分:3)

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

def as_json(options={})
    super(:only => [:name, :last_name, :age], :methods => [:full_name])
end

答案 1 :(得分:0)

def as_json(options = {})
  super(:only => [:name, :last_name, :age]).merge(
    { :full_name => self.full_name }.as_json
  )
end

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