module NoBrainer::Criteria::VirtualAttributes

Public Instance Methods

compile_rql_pass2() click to toggle source
Calls superclass method
# File lib/no_brainer/criteria/virtual_attributes.rb, line 4
def compile_rql_pass2
  rql = super

  if model.virtual_fields
    rql = rql.map do |_doc|
      model.virtual_fields.reduce(_doc) do |doc, field|
        field_rql = model.fields[field][:virtual].call(doc, RethinkDB::RQL.new)
        if field_rql.nil?
          doc
        else
          unless field_rql.is_a?(RethinkDB::RQL)
            raise "The virtual attribute `#{model}.#{field}' should return a RQL expression"
          end
          doc.merge(field => field_rql)
        end
      end
    end
  end

  rql
end