2011-08-10 43 views
-2

我有一個寶石處理圖像被修改。我想修改它來更新舊圖像,但是,我需要能夠獲取對象ID。幫助紅寶石和def respond_to?(方法,*參數,&塊)在庫

現在它使用下面的代碼:

def respond_to?(method,*args, &block) 
puts ("++++METHOD #{method.to_s} ARGS #{args} BLOCK #{block}") 
args.each do |value| 
    puts ("ARGS #{value}") 
end 

,但我不知道如何得到的東西我通過我也不知道如何傳遞的ID,我已經試過 @asset.image.s_245_245(:asset_id=>@asset.id)沒有成功。 Args什麼也沒有返回。我究竟做錯了什麼?

更新:我目前正在讀http://www.simonecarletti.com/blog/2009/09/inside-ruby-on-rails-extract_options-from-arrays/

更新:這也返回空白。

回答

2

你的問題很不清楚。方法respond_to?如何與您的對象ID問題相關?

猜測,在現實中,你想要覆蓋method_missing,因爲現在你不叫respond_to?,或者它不是在你的例子所示。

如果尚未定義這樣的方法,主叫image.s_245_245將觸發method_missing(在image對象)與你用於respond_to?的參數。

有一個規則,它說,如果你使用method_missing處理一些電話,那麼你應該修改respond_to?,使當被問及由method_missing處理的方法,它返回true。

至於對象ID,有兩種可能性:

  • 在紅寶石中的每個對象來響應.object_id(返回的每一個對象的內部標識符)
  • ActiveRecord對象響應.id(這是一個主鍵入數據庫)。

這只是一個側面說明,因爲我想,如果你開始method_missing而不是respond_to?嘗試,你會知道你要哪一個。

+0

對不清楚的問題,但是是的,這是我想要的method_missing。 –