Mark Locklear
Mark Locklear

Reputation: 5355

Rails uniqueness validation based on relation

I have two models...

  create_table "registrations", :force => true do |t|
    t.integer  "orientation_id"
    t.string   "first_name"
    t.string   "last_name"
    t.string   "email"
    t.string   "student_id"
...
  end
  create_table "orientations", :force => true do |t|
    t.date     "class_date"
    t.text     "class_time"
    t.integer  "seats"
    t.boolean  "active",     :default => true
    t.datetime "created_at",                   :null => false
    t.datetime "updated_at",                   :null => false
  end

I want to create a validation in my registration model that says the student_id must be unique in each Orientation.

Upvotes: 0

Views: 44

Answers (1)

Pavan
Pavan

Reputation: 33552

If i understood your question correctly,you want the scope option of the validates_uniqueness_of.If so,this should work

In your Registration model,

Class Registration < ActiveRecord::Base

......

validates_uniqueness_of :student_id, scope: :orientation_id

end

And also,you should be generating a migration to add this

add_index :registration, [ :student_id, :orientation_id ], :unique => true

More Info here

Upvotes: 1

Related Questions