这可能非常简单:我有一个控制器在传递参数时返回一个用户对象。
def show
if params[:mob]
user = User.find(params[:id])
respond_with([user.establishments,
user])
这将返回整个用户对象。这是一个问题,因为用户对象是加密的密码,哈希和我不想公开的各种其他数据。
让它返回用户对象减去某些指定属性的正确语法是什么?我正在寻找一个解决方案,我没有从我想要公开的用户属性手动创建一个新的哈希,因为它只是说,“给我没有x和y的用户”比“给我一个哈希”更简单of user.a,user.b,user.c,... user.n“
THX!
答案 0 :(得分:2)
我假设当你在xml或json中返回数据时这是一个问题。
您可以通过执行此类操作来排除某些字段。
obj.to_xml(:except => [ :created_at, :updated_at ])
或者您可以覆盖模型中的to_xml函数以始终排除值。
答案 1 :(得分:1)
这是另一个建议。
创建一个“消毒”用户的新方法:
class User < ActiveRecord::Base
...
def strip_sensitive_data!
[:password, :ssn, :birth_date].each { |m| send("#{m}=", nil) }
end
...
end
user = User.find(params[:id]).strip_sensitive_data!
答案 2 :(得分:0)
您可以在User对象上添加一个实例方法,该方法将返回具有所需属性的新User对象吗?