module ObjectJSONMapper::Local::ClassMethods

Public Instance Methods

find_by_local(source, &scope) click to toggle source

Allows you to apply filters from local model to remote data.

@param source [ObjectJSONMapper::Relation] @param scope [Proc] scope to execute on local results @return [ObjectJSONMapper:Relation]

@example

class User < ObjectJSONMapper::Base
  def self.local
    LocalUser
  end
end

class LocalUser < ActiveRecord::Base
end

User.find_by_local(User.all) do
  where(local_column: 'value')
end
# => SELECT * FROM local_users WHERE local_column = 'value'
# => GET http://example.com/users?id_in=1,2,3
# File lib/object_json_mapper/local.rb, line 47
def find_by_local(source, &scope)
  source.where(
    id_in: source.klass
                 .local
                 .all
                 .instance_exec(&scope)
                 .pluck(:id)
  )
end
local() click to toggle source
# File lib/object_json_mapper/local.rb, line 19
def local
  return @local if @local
  @local = Class.new(ActiveRecord::Base)
  @local.table_name = name.underscore.pluralize
  @local
end