如何在铁路3中使用属于属于属于的物体进行消毒3
-
11-10-2019 - |
题
我有两个类:用户和消息。以下是定义:
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 ])
不隶属于 StackOverflow