我在對象上使用了to_json
方法,並試圖讓:methods
參數起作用。我在我的模型(Drop)上有一個名爲is_favorited_by_user?
的方法。此方法採用current_user
的參數,然後檢查用戶是否傾向於放棄該放置。我如何通過to_json
方法傳遞這個參數。Ruby to_json:方法參數
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
我在對象上使用了to_json
方法,並試圖讓:methods
參數起作用。我在我的模型(Drop)上有一個名爲is_favorited_by_user?
的方法。此方法採用current_user
的參數,然後檢查用戶是否傾向於放棄該放置。我如何通過to_json
方法傳遞這個參數。Ruby to_json:方法參數
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
您可以添加current_user
屬性到模型和執行to_json
attr_accessor :current_user
def is_favorited_by_user?(user=nil)
user ||= current_user
# rest of your code
end
@drops.current_user = current_user
render :json => @drops.to_json(:methods => :is_favorited_by_user?)
方法to_json
需要的並非是帶參數的,但只是「消氣」的方法。 (通常情況下,那些創建基於你的數據庫的屬性。)
見的例子在這裏,沒有傳遞參數:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
如果你想要做的事的習慣,你需要創建一個方法建立您想要的信息的散列,然後將該散列轉換爲json。
有沒有一種方法,我可以在我的模型中得到CURRENT_USER變量之前設置它,所以我並不需要通過論證? – 2010-04-30 15:35:06
@JamesFinley模型不(也不應該)知道控制器或http請求的狀態。 current_user是請求的一部分,由於上述多線程問題,不應以全局方式暴露給模型。它只應作爲方法參數傳遞。 – hammady 2016-10-19 07:39:12
工作!謝謝,Voyta! – 2010-04-30 16:01:31
當我在索引操作中執行render:json => Drop.all時,如何擴展此解決方案。我在哪裏分配current_user? – 2011-06-01 16:34:41
模型中的'cattr_accessor:current_user'然後控制器中的'Model.current_user = current_user'。 – 2013-06-01 19:39:03