我有两个类:User和Message。以下是定义:
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对象)。这样做的最佳方式是什么?
感谢您的帮助。
答案 0 :(得分:1)
如果您在视图中手动渲染对象,则无需清理 - 响应将仅包含您公开的元素。
如果您使用的是AJAX和to_json,有几种方法可以删除这些信息。您可以在初始Model.find中使用select来确保实际上不从查询返回敏感信息。有关详情,请参阅Active Record Querying - selecting specific fields。
另一种方法是使用以下方法覆盖JSON渲染本身以仅显示必填字段:
to_json(:only => [ :column, :column ])