class PublicUid::SetPublicUid

Constants

NewUidNotSetYet
NoPublicUidColumnSpecified
NoRecordSpecified
PublicUidColumnDoesNotExist

Attributes

new_uid[R]

Public Class Methods

new(options) click to toggle source
# File lib/public_uid/set_public_uid.rb, line 10
def initialize(options)
  @record  = options[:record] || raise(NoRecordSpecified)
  @column  = options[:column] || raise(NoPublicUidColumnSpecified)
  @klass   = @record.class
  check_column_existance
end

Public Instance Methods

generate(generator) click to toggle source
# File lib/public_uid/set_public_uid.rb, line 17
def generate(generator)
  begin
    @new_uid= generator.generate
  end while similar_uid_exist?
end
set() click to toggle source
# File lib/public_uid/set_public_uid.rb, line 23
def set
  new_uid || raise(NewUidNotSetYet)
  @record.send("#{@column}=", new_uid )
end

Private Instance Methods

check_column_existance() click to toggle source
# File lib/public_uid/set_public_uid.rb, line 33
def check_column_existance
  raise PublicUidColumnDoesNotExist if @klass.column_names.include?(@column)
end
similar_uid_exist?() click to toggle source
# File lib/public_uid/set_public_uid.rb, line 29
def similar_uid_exist?
  @klass.where(@column => new_uid).exists?
end