how to perform validation prior to creating a new association between records?

Hi,

I’m trying to figure out the correct “Rails” way to perform validation prior to creating a new assocation between my models. Here’s the models:

class User < ActiveRecord::Base

has_and_belongs_to_many :roles
has_many :instructorships
has_many :instructed_courses, :through => :instructorships, :source => :course

class Course < ActiveRecord::Base

has_many :instructorships
has_many :instructors, :through => :instructorships, :source => :instructor

class Instructorship < ActiveRecord::Base
belongs_to :instructor, :class_name => ‘User’, :foreign_key => ‘user_id’
belongs_to :course

I’m trying to introduce a validation whereby only user objects with a role of ‘instructor’ can be assigned as an instructor on a course.

Firstly, where would this validation go? On the association model? And secondly, what is the right way to set this up?

thanks for your help,
Cathal.

The validation would go in the Instructorship model.

You’ll need a custom method, like so: http://edgeguides.rubyonrails.org/active_record_validations.html#custom-methods

Thanks Dheeraj :slight_smile: