Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- it "should validate the uniqueness of a column" do
- class User < Sequel::Model
- validations.clear
- validates do
- uniqueness_of :username
- end
- end
- User.dataset.extend(Module.new {
- def fetch_rows(sql)
- @db << sql
- if sql == "SELECT * FROM users WHERE (username = 'willy') LIMIT 1" then
- yield({:id => 1, :username => "willy", :password => "test"})
- end
- end
- })
- @user = User.new :username => "willy", :password => "anothertest"
- @user.should_not be_valid
- @user.errors.full_messages.should == ['username is already taken']
- @user.username = "pinky"
- @user.should be_valid
- end
- # custom models validations
- module Validation
- module ClassMethods
- def validates_uniqueness_of(*atts) # field value uniqueness validation
- opts = {
- :message => 'is already taken',
- }.merge!(atts.extract_options!)
- validates_each(*atts) do |o, a, v|
- o.errors[a] << opts[:message] unless v && !v.blank? && !o.class[a => v]
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment