2012-05-21 2 views
3

В настоящее время в моем приложении Синатра + DataMapper, у меня есть:Как отделить финализацию в разных базах данных в DataMapper?

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 

Я хочу, чтобы класс Комментарии идти отдельно от остальных в comments.db. Я смотрел вокруг, и я увидел что-то вроде этого (и к которому я отформатирован в моей ситуации):

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

     #... 

     belongs_to :recording 
    end 
end 

ли эта работа, как планировалось, или есть правильный способ сделать это?

ответ

4

Мы переопределить метод #default_repository_name на наших моделях, чтобы сделать это:

class Comment 
    include DataMapper::Resource 

    def self.default_repository_name 
    :comments 
    end 
end 
+0

И я хотел бы сделать это до 'DataMapper.finalize; DataMapper.auto_migrate! '? – Imnotanerd

+0

Ну, это действительно жестко закодировано в ваши модели, так что да, перед обеими этими двумя вещами. – d11wtq

Смежные вопросы