module RailsSettings::Scopes

Public Instance Methods

settings_join_condition() click to toggle source
# File lib/rails-settings/scopes.rb, line 29
def settings_join_condition
  "settings.target_id   = #{table_name}.#{primary_key} AND
   settings.target_type = '#{base_class.name}'"
end
with_settings() click to toggle source
# File lib/rails-settings/scopes.rb, line 3
def with_settings
  result = joins("INNER JOIN settings ON #{settings_join_condition}")

  if ActiveRecord::VERSION::MAJOR < 5
    result.uniq
  else
    result.distinct
  end
end
with_settings_for(var) click to toggle source
# File lib/rails-settings/scopes.rb, line 13
def with_settings_for(var)
  raise ArgumentError.new('Symbol expected!') unless var.is_a?(Symbol)
  joins("INNER JOIN settings ON #{settings_join_condition} AND settings.var = '#{var}'")
end
without_settings() click to toggle source
# File lib/rails-settings/scopes.rb, line 18
def without_settings
  joins("LEFT JOIN settings ON #{settings_join_condition}").
  where('settings.id IS NULL')
end
without_settings_for(var) click to toggle source
# File lib/rails-settings/scopes.rb, line 23
def without_settings_for(var)
  raise ArgumentError.new('Symbol expected!') unless var.is_a?(Symbol)
  joins("LEFT JOIN settings ON  #{settings_join_condition} AND settings.var = '#{var}'").
  where('settings.id IS NULL')
end