Sha256: bf837c048e819a5619da1e7c196977e669ac227e0d08eae3a9ba8576cc4fd1de

Contents?: true

Size: 1004 Bytes

Versions: 4

Compression:

Stored size: 1004 Bytes

Contents

module RailsSettings
  module Scopes
    def with_settings
      result = joins("INNER JOIN settings ON #{settings_join_condition}")

      if ActiveRecord::VERSION::MAJOR < 5
        result.uniq
      else
        result.distinct
      end
    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

4 entries across 4 versions & 1 rubygems

Version Path
ledermann-rails-settings-2.5.0 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.4.3 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.4.2 lib/rails-settings/scopes.rb
ledermann-rails-settings-2.4.1 lib/rails-settings/scopes.rb