从#create中选择属性

时间:2012-10-26 21:49:45

标签: ruby-on-rails ruby ruby-on-rails-3.1

我正在创建一个对象:

artist = Artist.create(:name => "Jbeebs",
                       :genre => "bestmusicever", 
                       :plays => "toomany")

我希望变量artist仅包含namegenre属性,因此我可以返回artist.nameartist.genre,但不能返回任何其他内容。< / p>

是否有类似于创造的东西?

我有一系列艺术家,并希望在输出JSON时只返回每个艺术家的名称和类型。

2 个答案:

答案 0 :(得分:2)

您可以通过重载to_json

中的Artist方法来执行此操作
def to_json(options = {})
  { name: name, genre: genre }.to_json(options)
end

将方法强制转换为JSON时,它将显示为不包含:plays的JSON对象。

答案 1 :(得分:0)

当您输出json时,只需解析您的艺术家并创建一个新对象以转换为json:

json_array = []
artists.collect{|artist| json_array << {name: artist.name, genre: artist.genre}}
json_array.to_json

否则,如果您总是希望艺术家在json中输出这两个属性,请使用Deefour的答案。