Hi --

On Sun, 4 Mar 2007, zig wrote:

> In Rails, is there a way to list at runtime the associations (has_one,
> belongs_to, etc) made for an ActiveRecord::Base model?
>
> I would like to make my views be a little smarter about these
> associations.  Currently, the scaffolding iterates through all
> content_columns, which excludes the columns used for the associations,
> since they end in _id.  Iterating through all columns, instead of just
> content_columns, is not much better, because I don't want to see the
> foreign_key either.  What I'd really like is something along the lines
> of this:
>
> <% for column in ModelA.columns %>
> <%
> if ModelA.content_columns.include?(column) then
>  column_output = @union.send(column.name)
> elsif column.name =~ /_id/ && ModelA.associations.map {|assoc|
> assoc.foreign_key}.include?(column.name) then
>  column_output = @union.send(ModelA.associations[:foreign_key =>
> column_name])
> end
> %>
> <p>
>  <b><%= column.human_name %>:</b> <%=h column_output %>
> </p>
> <% end %>
>
>
> OK, my logic above isn't perfect, needs some cleaning up, but
> whatever.  The point is, I need a method like associations, which can
> tell me what associations a model has, what their foreign keys are,
> etc.
>
> Is there any way to access that information?

ActiveRecord::Base.reflect_on_all_associations can probably give you
what you need.


David

-- 
Q. What is THE Ruby book for Rails developers?
A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black)
    (See what readers are saying!  http://www.rubypal.com/r4rrevs.pdf)
Q. Where can I get Ruby/Rails on-site training, consulting, coaching?
A. Ruby Power and Light, LLC (http://www.rubypal.com)