Module: RailsProperties::Scopes

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

Instance Method Summary collapse

Instance Method Details

#properties_join_conditionObject



29
30
31
32
# 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_propertiesObject



3
4
5
6
7
8
9
10
11
# 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) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
# 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_propertiesObject



18
19
20
21
# 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) ⇒ Object

Raises:

  • (ArgumentError)


23
24
25
26
27
# 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