Question

Currently in my Sinatra + DataMapper app, I have:

require 'data_mapper'

DataMapper.setup(:default,  "sqlite3://#{Dir.pwd}/main.db")
DataMapper.setup(:comments, "sqlite3://#{Dir.pwd}/comments.db")

class Recording
    include DataMapper::Resource

    # ...

    belongs_to :user
    has n, :comments
end

class User
    include DataMapper::Resource

    # ...

    has n, :recordings
end

class Audience
    include DataMapper::Resource

    # ...
end

# -------- ITS OWN DATABASE --------
class Comment
    include DataMapper::Resource

    #...

    belongs_to :recording
end

I want the Comments class to go separately from the others into comments.db. I was looking around, and I saw something like this (and to which I have formatted to my situation):

# -------- ITS OWN DATABASE --------
repository(:comments) do 
    class Comment
        include DataMapper::Resource

        #...

        belongs_to :recording
    end
end

Would this work out as planned, or is there a proper way to do this?

Was it helpful?

Solution

We override the #default_repository_name method on our models to do this:

class Comment
  include DataMapper::Resource

  def self.default_repository_name
    :comments
  end
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top