Validate key uniqueness across Key and DeployKey tables

This commit is contained in:
miks 2011-12-30 21:59:59 +02:00
parent c973fce606
commit 5b4382e12e
3 changed files with 15 additions and 0 deletions

View file

@ -1,3 +1,5 @@
require 'unique_public_key_validator'
class DeployKey < ActiveRecord::Base
belongs_to :project
@ -10,6 +12,8 @@ class DeployKey < ActiveRecord::Base
:uniqueness => true,
:length => { :within => 0..5000 }
validates_with UniquePublicKeyValidator
before_save :set_identifier
after_save :update_repository
after_destroy :repository_delete_key

View file

@ -1,3 +1,5 @@
require 'unique_public_key_validator'
class Key < ActiveRecord::Base
belongs_to :user
@ -10,6 +12,8 @@ class Key < ActiveRecord::Base
:uniqueness => true,
:length => { :within => 0..5000 }
validates_with UniquePublicKeyValidator
before_save :set_identifier
after_save :update_repository
after_destroy :repository_delete_key

View file

@ -0,0 +1,7 @@
class UniquePublicKeyValidator < ActiveModel::Validator
def validate(record)
if (DeployKey.where('key = ? AND id !=?', record.key , record.id).count > 0 || Key.where('key = ? AND id !=?', record.key , record.id).count > 0)
record.errors.add :key, 'already exist.'
end
end
end