How do I separate finalizing into different databases in DataMapper?
-
12-12-2019 - |
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?
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