2013-02-07 76 views
0

的对象会导致以下JSON响应:Rails的:返回克隆的对象加上多一个属性

[{ 
    "email":"[email protected]", 
    "id":2, 
    "role_id":2, 
}] 

我想添加自定义is_admin属性:

[{ 
    "email":"[email protected]", 
    "id":2, 
    "is_admin":"true", 
    "role_id":2, 
}] 

我想注入“ is_admin“标志:

full_obj = user.do_something_to_add_attribute('is_admin', user.is_admin?) 

使原来的user ob ject不会被修改,但只有do_something_to_add_attribute的结果将包含新标志。这个怎么做?

+0

为什么不直接复制用户对象? – shrimpsushi

+0

如何复制正确的方式,而不做这个属性的属性? – Paul

+0

用户对象的类是什么? – shrimpsushi

回答

2

如果你正在使用to_json,尝试

# user.rb 
def is_admin 
    is_admin? 
end 

# in generating the json object 
user.to_json(only: [:email, :id, :role_id], methods: [:is_admin]) 
+0

我想我不能在继承的方法中显式转换为JSON。它返回一个用户对象,并应继续这样做。 – Paul