class Bookie::Database::Group
A group of users
Public Class Methods
find_or_create!(name, known_groups = nil)
click to toggle source
Finds a group by name, creating it if it doesn’t exist
If known_groups
is provided, it will be used as a cache to reduce the number of database lookups needed.
This uses Lock#synchronize
internally, so it probably should not be called within a transaction block.
# File lib/bookie/database/group.rb, line 18 def self.find_or_create!(name, known_groups = nil) group = known_groups[name] if known_groups unless group Lock[:groups].synchronize do group = find_by(name: name) group ||= create!(name: name) end known_groups[name] = group if known_groups end group end