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