Class: MegaBar::SiteJoin
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- MegaBar::SiteJoin
- Defined in:
- app/models/mega_bar/site_join.rb
Class Method Summary collapse
-
.deterministic_id(site_id, siteable_type, siteable_id) ⇒ Object
Deterministic ID generation for SiteJoins ID range: 22000-22999.
Class Method Details
.deterministic_id(site_id, siteable_type, siteable_id) ⇒ Object
Deterministic ID generation for SiteJoins ID range: 22000-22999
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/mega_bar/site_join.rb', line 12 def self.deterministic_id(site_id, siteable_type, siteable_id) # Use site_id, siteable_type, and siteable_id to create unique identifier identifier = "#{site_id}_#{siteable_type}_#{siteable_id}" hash = Digest::MD5.hexdigest(identifier) base_id = 22000 + (hash.to_i(16) % 1000) # Check for collisions and increment if needed while MegaBar::SiteJoin.exists?(id: base_id) base_id += 1 break if base_id >= 23000 # Don't overflow into next range end base_id end |