Изменить текущую базу данных MongoMapper во время выполнения - PullRequest
1 голос
/ 04 декабря 2011

Как изменить текущую базу данных MongoMapper во время выполнения?

Кроме того, существует ли способ сопоставления модели с базой данных, имя которой рассчитывается динамически?Например:

class MyEntity
    include MongoMapper::Document
    set_database_name "#{some_dynamic_value}"
end

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

Если вы хотите использовать конкретную базу данных для модели, выполните ...

class MyEntity
  include MongoMapper::Document
  set_database_name "entities_database_development"
end

Вы можете выполнить там интерполяцию строк, но это разрешается только тогда, когда класс загружен, и больше никогда.

Чтобы вычислить имя базы данных каждый раз, когда требуется база данных, переопределите метод базы данных класса или экземпляра.

class MyEntity
  include MongoMapper::Document
  def database
    connection.db("my_database_#{rand}_development")
  end
end

Обратитесь к источнику плагина постоянства , чтобы получить представление о том, какой урон вы можете нанести путем переопределения.

0 голосов
/ 04 декабря 2011

Ответ на первую часть вашего вопроса, просто сделайте:

MongoMapper.database = 'dbname'
...