我有一个Gem来处理被修改的图像。我想修改它以更新旧图像,但是,我需要能够获得对象id。
现在它使用以下代码:
def respond_to?(method,*args, &block)
puts ("++++METHOD #{method.to_s} ARGS #{args} BLOCK #{block}")
args.each do |value|
puts ("ARGS #{value}")
end
但是我不知道如何从我传入的内容中获取id,也不知道如何传入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/
更新:这也是空白。
答案 0 :(得分:2)
你的问题很不清楚。方法respond_to?
如何与您的对象ID问题相关?
我猜测实际上你想要覆盖method_missing
,因为现在你没有打电话给respond_to?
,或者你的例子中没有显示它。
如果您尚未定义此类方法,则调用image.s_245_245
将触发method_missing
(在image
对象中),其中包含您用于{{1}的参数}}
有一条规则,即如果您使用respond_to?
来处理某些调用,那么您应还修改method_missing
,并在要求时返回true由respond_to?
处理的方法。
对于对象ID,有两种可能性:
method_missing
(返回每个对象的内部标识符).object_id
(这是数据库中的主键)。这只是一个侧面说明,因为我想如果你开始尝试.id
而不是method_missing
,你会知道你想要哪一个。