【发布时间】:2009-12-24 11:45:16
【问题描述】:
我在 Ruby 中有一个名为 Post 的对象。 我想将帖子转换为 json,但我也想包含发布帖子的用户的姓名。问题是 Post 对象中不存在 user_name,但用户 id 存在。
所以我实际上想要的是这样的东西
{name:"My Post", body:"My post data", user_name:"jhonny"}
当我对 Post 对象执行 to_json 时,我得到关注
{name:"My Post", body:"My post data"}
但我也想将user_name:"jhonny" 部分也附加到它。我知道我可以将其设为散列,然后对散列执行 to_json,但我不想手动为所有帖子值生成散列,因为要发布的属性很多。我宁愿使用哈希合并函数将附加属性添加到哈希,然后在其上调用 json。
有没有办法为 ruby 类创建一个快速的哈希对象?欢迎任何想法。
类似
my_post.hash.merge{:user_name => "jhonny"}.to_json
干杯。
【问题讨论】:
-
我找到了像 ActiveRecord::JSON.decode(my_post.to_json).merge({:user_name => "jhonny"}).to_json 这样的方法,但这是一个糟糕的 hack。我想要一种更简洁的方法来解决这个问题。
-
我不认为这是一个糟糕的 hack。您只需将 post 更改为 json,然后返回到散列,然后合并用户名,然后将整个散列转换回 json。如果在某些情况下失败,那将是一个糟糕的 hack。
标签: ruby-on-rails ruby