- 
                Notifications
    
You must be signed in to change notification settings  - Fork 152
 
Open
Labels
Description
I'm trying to set up an API that uses Sequel. Trying to present a collection throws this error:
NoMethodError: Entities::Event missing attributename' on #Sequel::Postgres::Dataset:0x007fe4861eb078`
This works with ActiveRecord, but not with Sequel. The check for if an object is a collection is done by checking if the .to_ary method exists on an object. This is true for ActiveRecord, but not for Sequel.
I've made a small workaround to make it work for now, but I feel this should be part of Grape Entity and not Sequel.
module Sequel
  class Dataset
    alias_method :to_ary, :to_a
  end
endIs there a more reliable way to check if an object is a collection? Such as doing a check on .to_a? Or to check if it is somehow Enumerable?
Example setup:
require "rubygems"
require "pg"
require "sequel"
require "grape"
require "grape-entity"
# Sequel.migration do
#   change do
#     create_table :events do
#       Integer :id, primary_key: true
#       String :name, size: 255
#       DateTime :created_at, null: true, index: true
#     end
#   end
# end
DB = Sequel.connect("postgres://user:password@localhost:5432/my_database")
module Sequel
  class Dataset
    # If this is removed the collection present doesn't work.
    alias_method :to_ary, :to_a
  end
end
class Event < Sequel::Model
end
module Entities
  class Event < Grape::Entity
    expose :name
  end
end
class API < Grape::API
  format :json
  resource :events do
    get do
      present :events, Event.all, with: Entities::Event
    end
  end
end