Forum: Ruby detecting associations in rails

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
zig (Guest)
on 2007-03-04 03:36
(Received via mailing list)
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(
elsif =~ /_id/ && {|assoc|
assoc.foreign_key}.include?( then
  column_output = @union.send(ModelA.associations[:foreign_key =>
  <b><%= column.human_name %>:</b> <%=h column_output %>
<% 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,

Is there any way to access that information?
unknown (Guest)
on 2007-03-04 04:00
(Received via mailing list)
Hi --

On Sun, 4 Mar 2007, zig wrote:

> <p>
> Is there any way to access that information?
ActiveRecord::Base.reflect_on_all_associations can probably give you
what you need.

zig (Guest)
on 2007-03-05 00:10
(Received via mailing list)
On Mar 3, 5:59 pm, removed_email_address@domain.invalid wrote:

> David

Yes, that's exactly what I was looking for.  Thanks for showing me
where it was!
This topic is locked and can not be replied to.