Rails模型哈希,排除属性

我试图形成一个看起来像这样的json响应:

{ "user": { "birthday": "2013-03-13", "email": "example@example", "id": 1, "name": null, "username": "example" }, "other_data": "foo" } 

之前,当我刚回到用户时,我用过

 render :json => @user, :except => [:hashed_password, :created_at, :updated_at] 

保持hashed_pa​​ssword,created_at和updated_at属性不被发送。 有没有办法做到这一点,但也允许与用户一起发送其他数据? 现在我只是逐个添加我想要发送到哈希的属性,但这显然不太理想。

渲染json数据首先在模型上自动调用’as_json’,它返回一个ruby哈希。 之后,调用’to_json’来获取哈希的字符串表示。

要实现您想要的,您可以调用以下内容:

 render :json => { :user => @user.as_json(:except => [:hashed_password]), :some_other_data => {} } 

在这种情况下,没有对象响应’as_json’,因此控制器只调用’to_json’将您的哈希值转换为字符串。

我建议使用这个gem: https : //github.com/fabrik42/acts_as_api