On Wednesday, 20 November 2013 12:34:37 UTC-5, Ruby-Forum.com User wrote:
>
> Hi All, 
>
> I've previously used concerns to extend my models without problems.  I'm 
> now trying to extend all my models in one swell-foop by extending AR 
> with a concern. In brief, I want to add a class variable to each 
> individual model using a concern that extends AR.   Specifically - I 
> need to find the where (and how) to define a class variable scoped to a 
> specific model in my AR extending concern. Is this sane?  Possible? 
>
>
You don't want a class variable for this - they are shared between all the 
subclasses. A sample IRB trace:

irb: class Foo
>>     end
===> nil
irb: module Bar
>>     def wat=(value)
>>       @@wat = value
>>     end
>>
>>     def wat
>>       @@wat
>>       end
>>   end
===> nil
irb: Foo.send(:include, Bar)
===> Foo
irb: f = Foo.new
===> #<Foo:0x00000100b5a008>
irb: f.wat = 'huh'
===> "huh"
irb: f.wat
===> "huh"
irb: class Baz < Foo
>>     end
===> nil
irb: class Baz2 < Foo
>>     end
===> nil
irb: b = Baz.new
===> #<Baz:0x00000100b7ac68>
irb: b.wat
===> "huh"
irb: b2 = Baz2.new
===> #<Baz2:0x00000100b82580>
irb: b2.wat = 'nope'
===> "nope"
irb: f.wat
===> "nope" 

You likely want a class instance variable instead, to avoid the sharing. 
More details here:

http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/

--Matt Jones

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/e451922c-9f53-4aeb-802f-e5dadcb2676b%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to