这可能非常简单:我有一个控制器,当传递参数时返回一个用户对象。
def show
if params[:mob]
user = User.find(params[:id])
respond_with([user.establishments,
user])
这将返回整个用户对象。这是一个问题,因为在用户对象上是加密的密码,哈希和我不想公开的各种其他数据。
让它返回用户对象减去一些指定属性的正确语法是什么?我正在寻找一种解决方案,其中我没有手动从我想要公开的用户属性中创建新的哈希值,因为只说"给我没有 x 和 y 的用户"比"给我一个 user.a、user.b、user.c 的哈希......用户.n"
感谢!
我假设这是当您以xml或json格式返回数据时的问题。
您可以通过执行类似操作来排除某些字段来解决此问题。
obj.to_xml(:except => [ :created_at, :updated_at ])
或者,您可以重写模型中的 to_xml 函数以始终排除值。
这是另一个建议。
创建一个"清理"用户的新方法:
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!
上添加一个实例方法,该方法将返回一个具有所需属性的新 User 对象吗?