class MR::ReadModel::FromSubqueryExpression

Attributes

subquery_block[R]

Public Class Methods

new(&block) click to toggle source
# File lib/mr/read_model/query_expression.rb, line 108
def initialize(&block)
  raise ArgumentError, "a block must be provided" unless block
  @subquery_block = block
end

Public Instance Methods

ar_relation(params = nil) click to toggle source
# File lib/mr/read_model/query_expression.rb, line 129
def ar_relation(params = nil)
  self.record_class.scoped.from(self.from_subquery.build_sql(params))
end
default_find_attr() click to toggle source
# File lib/mr/read_model/query_expression.rb, line 124
def default_find_attr
  raise NoFindAttrError, "a `find_attr` has to be specified " \
                         "when using a from subquery"
end
from_subquery() click to toggle source

lazy-build `FromSubquery` so its block is not evaluated until the read model `query` method is called, cache it so it doesn't have to be rebuilt for every `query` call

# File lib/mr/read_model/query_expression.rb, line 116
def from_subquery
  @from_subquery ||= FromSubquery.new(&self.subquery_block)
end
record_class() click to toggle source
# File lib/mr/read_model/query_expression.rb, line 120
def record_class
  self.from_subquery.record_class
end