class Polymorph::Relation
Public Class Methods
new(query, source_types:, fields:)
click to toggle source
Calls superclass method
# File lib/polymorph/relation.rb, line 4 def initialize(query, source_types:, fields:) @source_types, @fields = source_types, fields super(query) end
Public Instance Methods
count()
click to toggle source
# File lib/polymorph/relation.rb, line 9 def count self.to_a.length end
pluck(field)
click to toggle source
# File lib/polymorph/relation.rb, line 13 def pluck(field) self.to_a.map(&field) end
where(hash = {})
click to toggle source
Calls superclass method
# File lib/polymorph/relation.rb, line 17 def where(hash = {}) fields = hash.slice(*@fields) clause = fields.map do |field| %{( #{@source_types.map { |type| "#{type}.#{field[0]} = :#{field[0]}" }.join(" OR ")} )} end.join(" AND ") rebuild(super(clause, fields)) end
Private Instance Methods
rebuild(query)
click to toggle source
# File lib/polymorph/relation.rb, line 29 def rebuild(query) self.class.new(query, source_types: @source_types, fields: @fields) end