# Hello, # currently I have 3 tables: users, projects and customers but customers # soon should become part of users too so I decided to create a relation # through projects but has_many :through doesn''t work in this case, # because AR generated me a wrong WHERE clause. ## create_projects.rb create_table "projects", :force => true do |t| t.column "title", :string, :null => false t.column "description", :text t.column "fee", :integer, :default => 2000, :null => false t.column "tax", :integer, :default => 19, :null => false t.column "client_id", :integer, :null => false t.column "agent_id", :integer, :null => false end class User < ActiveRecord::Base has_many :clients, :through => :projects #... end class Project < ActiveRecord::Base belongs_to :client, :class_name => ''Customer'', :foreign_key => :client_id belongs_to :agent, :class_name => ''User'', :foreign_key => :agent_id #... end # The definition of an class_name or the relation from User class itself # seems to baffle AR to build a wrong WHERE clause, although I defined a # foreign_key in projects relation... # So I tried to use a n:m relation, which seems to fit better, but I always # get duplicates which I could not get rid off using :uniq => true. ## user.rb class User < ActiveRecord::Base has_and_belongs_to_many :clients, :class_name => ''Customer'', # Becomes a User in future :association_foreign_key => :client_id, :foreign_key => :agent_id, :join_table => :projects, :uniq => true # !! Doesn''t seem to work :( #... end clients = user.clients.uniq # !! Doesn''t work too :( Sincerely Florian --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---