Checking if an association already exists between two records


I'm creating an app which has two models - bands and users. A
relationship between users and bands in many to many.

However, when I'm adding an existing to user to a band (ie. updating
the bands_users table) how can i check if the relationship between the
user and the band already exists? For example, if a user with ID of 3
was already a member of a band with ID 5, and then somebody tried to
make this connection again - I want to output an error message. Is
there some special validation I can place in a bands_users.rb that
validated the uniqueness of the entire record?


You can use the scopt attribute of validates_uniqueness_of
But this would require, that the intermediate table between
users/bands has it's own model

in this model (BandsUsers)
validates_uniqueness_of :user_id, :scope => band_id

There is a :uniq option that will ignore duplicates:

  class Band < ActiveRecord::Base
    has_and_belongs_to_many :users, :uniq => true

This won't raise an error, but it will prevent duplicate associations.
Hope that Helps


I guess you have your reasons but why not ignore the fact that the
relationship already existed? Does it really matter to let the user