> Users: > id > category # can be either 'ADMIN', 'AUDITOR' or 'TENANT' > > Audits: > id > auditor_id > tenant_id >
Looking at this original Table format you have two foreign_keys in auditor and tenant. auditor_id matches user.id tenant_id matches user.id admin_id matches user.id > class User < ActiveRecord::Base > has_many :audits > end You can design your User table and use self-referential associations within a given model. class User < ActiveRecord::Base has_many :audits has_many :auditors, :through => :audits has_many :tenants, :through => :audits end > class Audit < ActiveRecord::Base > belongs_to :user # !!! This does not work even using :class_name, > etc. !!! > end class Audit < ActiveRecord::Base belongs_to :user belongs_to :auditor, :class_name => "User" belongs_to :tenant, :class_name => "User" end Using this format you can define any method in your Audit model with something similar to: :joins => [:user, :auditor, :tenant] .. which will join those self-referential tables together And then in your controller if you use: @audits = Audit.all :include => [:user, :auditor, :tenant] In your view you can do: @audits.each do |audit| audit.auditor.category audit.tenant.category audit.user.category Notice that the above example basically will find out the category for each listing based on the foreign_key ids assigned through the associations. I only show this to you because it allows you to use multiple foreign_keys within one table and can help you rethink the design of your tables/models depending on the use. I hope this gives you a little bit of an idea.. -- 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 post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

