I also want to find the association name dynamically from a dynamic
object. I was looking for something to help me on this. '
ActiveRecord::Reflection' a nice module to get association info.

Thanks Peter.
- Abhi




Peter wrote in post #1032176:
> On Nov 15, 12:27pm, PandaR1 <fabio.montars...@gmail.com> wrote:
>> belongs_to :currency, :class_name => "Measureunit" , :foreign_key =>
>> "currency_id"
>>
>> How can I recover the class name from the association name (eg. I have the
>> string 'Currency' and I look for
>> a method that return 'Measureunit')
>>
>> I found class_name() and klass() but I can't figure the syntax...
>
> I believe what you're saying is that you have the Vendor class, and
> the name of the association as a string, 'Currency'.  You want to look
> at The ActiveRecord::Reflection documentation, specifically
> reflect_on_association (http://apidock.com/rails/ActiveRecord/
> Reflection/ClassMethods/reflect_on_association).  That gives you back
> an AssociationReflection, which has a bunch of information for you:
> http://apidock.com/rails/ActiveRecord/Reflection/AssociationReflection.
> Specifically again, you likely want klass on that, which should return
> the class of the association; do be aware that its a little bit more
> complex for polymorphic relationships if that's necessary to support.
>
> So in summary what you likely want is something like
>   s = "Currency"
>   association_name = s.underscore                                # Or
> whatever transformation takes your string to your association name
>   reflection = Vendor.reflect_on_association(association_name)   #
> Returns the AssociationReflection object
>   reflection.klass                                               #
> Returns the class object, in this case Measureunit
>
> HTH,
> \Peter

-- 
Posted via http://www.ruby-forum.com/.

-- 
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 rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/27b8fe84844d4d2c5e31a023fcaa314b%40ruby-forum.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to