1

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

类消息 < ActiveRecord::Base
  belongs_to :receiver, :class_name => '用户', :foreign_key => 'receiver'
  belongs_to :sender, :class_name => '用户', :foreign_key => 'sender'
结尾

类用户 < ActiveRecord::Base
  has_many :incoming_messages, :class_name => 'Message', :foreign_key => 'receiver'
  has_many :outgoing_messages, :class_name => '消息', :foreign_key => 'sender'
结尾

当我在控制器中收到消息时,我也得到了用户对象

@message.receiver

@message.sender

这些对象包含一些我想在将其传递给视图之前删除的用户信息(密码等)(在我的例子中是一个 json 对象)。这样做的最佳方法是什么?

感谢帮助。

4

1 回答 1

1

如果您在视图中手动渲染对象,则无需清理 - 响应将仅包含您公开的元素。

如果您使用 AJAX 和 to_json,有几种方法可以删除信息。您可以在初始 Model.find 中使用 select 来确保敏感信息实际上不是从查询中返回的。有关更多信息,请参阅Active Record Querying - 选择特定字段

另一种方法是覆盖 JSON 呈现本身以仅显示必填字段,使用:

to_json(:only => [ :column, :column ])
于 2010-12-19T00:10:15.793 回答