Sha256: 786a3158db2c5a9b4986500acab17feab31d6dbc802db06afa406bcb734b8f49
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
module PublicId module ActiveRecord module InstanceMethods def to_param self.send(self.class.public_identifier_attribute) end def public_identifier_attribute self.class.public_identifier_attribute end def initialize_public_id self.send(public_identifier_attribute) or self.send("#{public_identifier_attribute}=", self.class.new_public_identifier) end end module PublicallyIdentifiedBy extend ActiveSupport::Concern included do end module ClassMethods def publically_identified_by(attribute_name, *args) return if respond_to?(:public_identifier_attribute) options = args.extract_options! class << self attr_accessor :public_identifier_attribute, :public_identifier_options # def public_identifier # @public_identifier # end # def public_identifier=(attribute_name) # @public_identifier = attribute_name # end def initialize_public_ids! self.where(self.public_identifier_attribute => nil).find_each do |obj| obj.update_attribute(self.public_identifier_attribute, self.new_public_identifier) end end def find_by_public_id(public_id) where(self.public_identifier_attribute => public_id).first end def new_public_identifier while(true) new_id = ::PublicId::Util.new_public_identifier(self, self.public_identifier_options) break unless where(self.public_identifier_attribute => new_id).exists? end return new_id end end self.public_identifier_attribute = attribute_name self.public_identifier_options = options include ::PublicId::ActiveRecord::InstanceMethods after_initialize :initialize_public_id end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
public_id-0.5.0 | lib/public_id/activerecord/publically_identified_by.rb |