Sha256: 4fffb0de89305004b5f546a036ca9bb8c0bcb68434a307bbc64b32d6ecdcc4f1

Contents?: true

Size: 899 Bytes

Versions: 8

Compression:

Stored size: 899 Bytes

Contents

module RailsSettings
  module Scopes
    def with_settings
      joins("INNER JOIN settings ON #{settings_join_condition}").
      uniq
    end

    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

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

    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

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ledermann-rails-settings-2.4.0 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.3.0 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.2.1 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.2.0 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.1.0 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.0.3 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.0.2 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.0.1 lib/rails-settings/scopes.rb