2010-12-18 34 views
1

我有兩個類:用戶和消息。下面是定義:如何消除在rails 3中使用belongs_to獲取的對象

 
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對象)。這樣做的最好方法是什麼?

感謝您的幫助。

回答

1

如果您手動呈現視圖中的對象,則無需清理 - 響應將只包含您公開的元素。

如果您使用AJAX和to_json,有幾種方法可以刪除信息。您可以在初始的Model.find中使用select來確保實際上不會從查詢中返回敏感信息。有關更多信息,請參閱Active Record Querying - selecting specific fields

另一種方法是重寫JSON渲染本身,只顯示所需的字段,使用:

to_json(:only => [ :column, :column ]) 
+0

是的,偉大的建議,謝謝! :) – 2010-12-24 05:57:35

相關問題