I am making a plugin which extends ActiveRecord::Base I have the plugin working in my models in other aspects. I would like to pass in some data to the plugin, but I can''t get the data I would like. so if I have: class Stuff < ActiveRecord::Base belongs_to :thing my_plugin :id => self.thing.other_id end it chokes on figuring out what to do with self.thing.other_id. I checked, and self isn''t recognized at the point that I am calling my_plugin so if i do : class Stuff < ActiveRecord::Base belongs_to :thing my_plugin :id => self.class.to_s end when I print out :id the class result comes back as blank. Is there a way to do this? The closest I can get is I can sort of do self.send(:thing).send (:other_id) It didn''t 100% work, but it was starting to get clunky, and I didn''t pursue the error I was creating. There has to be something obvious I am missing. thanks, Charles
Rick Olson
2009-Oct-12 01:54 UTC
Re: passing model data to a plugin called within that model
> class Stuff < ActiveRecord::Base > belongs_to :thing > > my_plugin :id => self.thing.other_id > > endThis is impossible. self in the above snippet is the Stuff class. I''m assuming you want that to use a instance of Stuff at the time some magical method is called. You have to use a block class Stuff < ActiveRecord::Base my_plugin do |stuff| {:id => stuff.thing.other_id} end end The my_plugin method has to know how to store that block so that the instance can call it, passing itself as the first argument. -- Posted via http://www.ruby-forum.com/.