module RailsProperties::Scopes

Public Instance Methods

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

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