Newbie here: conflict associations to the same table. has_many:invoices, has_many :invoices, through: user_invoice_viewers

StackOverflow https://stackoverflow.com/questions/11461448

Question

this seems pretty basic stuff here, but actually i'm finding it a bit harsh to define this scenario with Rails...

Perhaps any of you can provide some guidance?

So I have three Tables, Users, Invoices, and User_Invoice_Viewers (these basically map users that have viewer access to an invoice)

Now my models :

User.rb :

has_many :invoices
has_many :user_invoice_viewers
has_many :invoices, through :user_invoice_viewers

Invoice.rb

belongs_to user_invoice_viewers
belongs_to :user

User_Invoice_Viewers.rb

belongs_to :users
belongs_to :invoices

Now this just seems wrong... I repeat has_many :invoices on User model, so i expect conflict when executing : User.invoices ...

What would be the best solution for this? I had thought of putting it all on a user_invoice table, but since i expect to have more owners than viewers, for performance reasons, i decided to build a direct dependency between invoice and its owner...

Thanks

Was it helpful?

Solution

I would consider using the :class_name option on the association, so that the two relationships are named differently. Something like this:

class User < ActiveRecord::Base

  has_many :invoices
  has_many :user_invoice_viewers
  has_many :viewable_invoices, through :user_invoice_viewers, :class_name => "Invoice"

  ...

end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top