Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 746453
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T14:05:34+00:00 2026-05-14T14:05:34+00:00

The following are the models and association. class Vendor < ActiveRecord::Base attr_accessible :name, :address_attributes

  • 0

The following are the models and association.

class Vendor < ActiveRecord::Base
  attr_accessible :name, :address_attributes
  has_many :campaigns
  has_many :clients, :through => :campaigns
end

class Client < ActiveRecord::Base
  attr_accessible :name
  has_many :campaigns
  has_many :vendors, :through => :campaigns
end

class Campaign < ActiveRecord::Base
  attr_accessible :name, :vendor_id, :client_id, :start_date, :end_date
  belongs_to :client
  belongs_to :vendor
end

And this is the new campaign create form
– form_for @campaign do |f|
= f.error_messages
%p
= f.label :name
%br
= f.text_field :name
%p
= f.label :client_id, “Client”
%br
= f.collection_select(:client_id, Client.all, :id, :name, {:prompt => “Please select the client”}, {:class => “client_list”})

Now, the association method @vendor.clients will just list the clients through the campaign join model.
If the campaign table is blank, there ain’t any clients I can get with @vendor.clients

But as you see in the collection_select in the new campaign form, I have to be able to choose the clients that belong to the vendor. So, I had to put the Client.all call.
Though it renders the collection select, all those clients will be listed though they don’t belong to that vendor.

So, to get/create/associate the clients and vendors with each other and to get @vendor.clients though the campaign is not created, I had to add another many to many association between vendors and clients, right?

If I do create the habtm association, it will conflict with each other, right?

class Vendor < ActiveRecord::Base
  attr_accessible :name, :address_attributes
  has_many :campaigns
  has_many :clients, :through => :campaigns
  has_and_belongs_to_many :clients
end

class Client < ActiveRecord::Base
  attr_accessible :name
  has_many :campaigns
  has_many :vendors, :through => :campaigns
  has_and_belongs_to_many :vendors
end

How am I gonna solve this? coz now, if I do, @vendor.clients or @client.vendors, which association gets called?

The one with has_and_belongs_to_many or has_many: .., :through => ..

  • 1 1 Answer
  • 1 View
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T14:05:34+00:00Added an answer on May 14, 2026 at 2:05 pm

    You can rename your associations. In Vendor model:

    has_many :campaign_clients, :through => :campaigns, :class_name => 'Client', :source => :client
    

    and in Client model:

    has_many :campaign_vendors, :through => :campaigns, :class_name => 'Vendor', :source => :vendor
    

    Then, for example, vendor.clients will trigger the habtm association, and vendor.campaign_clients will trigger the :through association.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Following is the association between 2 models: class FotoGossip < ActiveRecord::Base has_many :uploads end
I have the following models: class Person < ActiveRecord::Base has_many :accounts, :through => :account_holders
I have the following models: class Instance < ActiveRecord::Base has_many :users has_many :books end
I have the following models: class FieldEntryValue < ActiveRecord::Base belongs_to :field_entry end and class
I have the following models: class Price < ActiveRecord::Base belongs_to :product end class Metric
I have three Models setup with the following associations class User < ActiveRecord::Base has_many
I have the following models: class Match < ActiveRecord::Base has_and_belongs_to_many :teams end And class
I have the following models: class Release < ActiveRecord::Base has_many :products, :dependent => :destroy
I have the following models, with their relevant associations: class User < ActiveRecord::Base has_many
I have the following two models, User.. class User < ActiveRecord::Base has_and_belongs_to_many :sites end

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.