我有两个类:用户和消息。以下是定义:

class Message < ActiveRecord::Base
  belongs_to  :receiver, :class_name => 'User', :foreign_key  => 'receiver'
  belongs_to  :sender, :class_name   => 'User', :foreign_key  => 'sender'
end

class User < ActiveRecord::Base
  has_many :incoming_messages, :class_name => 'Message', :foreign_key => 'receiver'
  has_many :outgoing_messages, :class_name => 'Message', :foreign_key => 'sender'
end

当我在控制器中获取消息时,我也将用户对象获取

@message.receiver 

@message.sender

这些对象包含一些用户信息(密码等),我想在将其传递到视图之前(在我的情况下是JSON对象)。这样做的最好方法是什么?

感谢帮助。

有帮助吗?

解决方案

如果您正在手动渲染视图中的对象,则无需消毒 - 响应将仅包含您暴露的元素。

如果您使用的是Ajax和to_json,则有几种删除信息的方法。您可以在初始模型中使用SELECT。查阅以确保实际上未从查询中返回SENSTIVE信息。看 活动记录查询 - 选择特定字段 更多。

替代方法是覆盖JSON渲染以仅显示所需字段,使用:

to_json(:only => [ :column, :column ])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top