Sha256: ee1ebd314ccb0acb13d3fd6dc8a9c4b0e74024c43ce180a25602257b34104ad1
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
# EAN-13 Barcode 是13位条形码。 # https://en.wikipedia.org/wiki/EAN-13 # https://en.wikipedia.org/wiki/International_Article_Number_(EAN) class Unidom::ArticleNumber::Ean13Barcode < ActiveRecord::Base RESTRICTED_DISTRIBUTION_GS1_PREFIXES = (('020'..'029').to_a + ('040'..'049').to_a + ('200'..'299').to_a).freeze self.table_name = 'unidom_ean_13_barcodes' #validates :code, presence: true, length: { is: self.columns_hash['code'].limit }, numericality: { only_integer: true }, uniqueness: true validates :code, uniqueness: true, numericality: { only_integer: true } validates :gs1_prefix, presence: true, length: { is: 3 }, numericality: { only_integer: true } validates :company_number, presence: true, length: { is: 4 }, numericality: { only_integer: true } validates :item_reference, presence: true, length: { is: 5 }, numericality: { only_integer: true } validates :check_digit, presence: true, length: { is: 1 }, numericality: { only_integer: true } has_many :markings, class_name: 'Unidom::ArticleNumber::Marking' include ::Unidom::Common::ModelExtension def code=(code) code = code.to_s write_attribute :code, code if code.present? write_attribute :gs1_prefix, code[0..2] write_attribute :company_number, code[3..6] write_attribute :item_reference, code[7..11] write_attribute :check_digit, code[12] end end def restricted_distribution? self.class::RESTRICTED_DISTRIBUTION_GS1_PREFIXES.include? gs1_prefix end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
unidom-article_number-0.1 | app/models/unidom/article_number/ean_13_barcode.rb |