class DoubleEntry::Reporting::LineMetadataFilter
Public Class Methods
filter(collection:, metadata:)
click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 6 def self.filter(collection:, metadata:) table_alias_index = 0 metadata.reduce(collection) do |filtered_collection, (key, value)| table_alias = "m#{table_alias_index}" table_alias_index += 1 filtered_collection. joins("INNER JOIN #{line_metadata_table} as #{table_alias} ON #{table_alias}.line_id = #{lines_table}.id"). where("#{table_alias}.key = ? AND #{table_alias}.value = ?", key, value) end end
Private Class Methods
line_metadata_table()
click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 21 def self.line_metadata_table DoubleEntry::LineMetadata.table_name end
lines_table()
click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 26 def self.lines_table DoubleEntry::Line.table_name end