Ruby on Rails - 检索用户对象,减去指定的属性



这可能非常简单:我有一个控制器,当传递参数时返回一个用户对象。

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 对象

上添加一个实例方法,该方法将返回一个具有所需属性的新 User 对象吗?

相关内容

  • 没有找到相关文章

最新更新