Module: RailsSettings::Scopes

Defined in:
lib/rails-settings/scopes.rb

Instance Method Summary collapse

Instance Method Details

#settings_join_conditionObject



28
29
30
31
# File 'lib/rails-settings/scopes.rb', line 28

def settings_join_condition
  "settings.target_id   = #{table_name}.#{primary_key} AND
   settings.target_type = '#{base_class.name}'"
end

#with_settingsObject



3
4
5
6
# File 'lib/rails-settings/scopes.rb', line 3

def with_settings
  result = joins("INNER JOIN settings ON #{settings_join_condition}")
  result.distinct
end

#with_settings_for(var) ⇒ Object

Raises:

  • (ArgumentError)


8
9
10
11
12
13
# File 'lib/rails-settings/scopes.rb', line 8

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_settingsObject



15
16
17
18
19
# File 'lib/rails-settings/scopes.rb', line 15

def without_settings
  joins("LEFT JOIN settings ON #{settings_join_condition}").where(
    'settings.id IS NULL',
  )
end

#without_settings_for(var) ⇒ Object

Raises:

  • (ArgumentError)


21
22
23
24
25
26
# File 'lib/rails-settings/scopes.rb', line 21

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