如何在Ruby中获取所有对象的属性

时间:2018-02-19 10:28:00

标签: ruby-on-rails ruby

我与yt gemYt::Video合作。我有一个模型类Video,它有很多属性。我想将video对象属性的所有值保存到json中的文件中,而不是逐个提及特定属性。

由于to_json错误,我无法使用SystemStackError (stack level too deep)

我很欣赏有关更好的方法的任何想法。

更新 最后,感谢Palma先生和D-side的线索,尤其是sawa的回答,我弄清楚为什么堆栈如此之深。 这是因为视频模型将Auth对象作为具有Video对象作为子对象的属性... [这里有无尽的循环]

1 个答案:

答案 0 :(得分:1)

属性或属性是Rails中的概念。没有它,不清楚你的意思是什么。

如果你的属性是为类定义的实例变量,并且假定你已经在基本对象类型上定义了to_json,那么你可以定义类似的东西:

class Video
  def to json
    instance_variables.each_with_object({}) do |k, h|
      h[k] = instance_variable_get("@#{k}")
    end.to_json
  end
end