Mongoid Dynami c store_in - PullRequest
       14

Mongoid Dynami c store_in

0 голосов
/ 14 января 2020

У меня есть модель XslSheet, в которой я хотел бы изменить коллекцию, в которой она сохранена, на основе имени другой модели.

Я попытался создать метод внутри моей модели XslSheet, например:

def set_store_in(comp)
    store_in collection: comp + "_xsl_sheets"
end

Затем я включил это в действие, в котором сохраняется модель:

stylesheet = XslSheet.new
stylesheet.set_store_in(@comp.name)

Это, похоже, не работает, поскольку моя модель сохраняется в коллекции по умолчанию 'xsl_sheets'.

Я также пробовал:

  store_in collection: Company.where(:id=>User.current_user.current_scope['Comp']).pluck(:name)[0] + "_xsl_sheets" unless User.current_user.nil? or User.current_user.current_scope.nil?

Когда пользователь не вошел в систему, он возвращает nil, так как User.current_user.current_scope ['Comp'] равен nil.

Можно ли динамически установить коллекцию store_in, как я пытаюсь сделать?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Мне удалось это исправить с помощью следующего в xsl_sheet.rb

def self.collection_name
  Company.where(:id=>User.current_user.current_scope['Comp']).pluck(:name)[0] + "_xsl_sheets" unless User.current_user.nil? or User.current_user.current_scope.nil?
end
0 голосов
/ 14 января 2020

Это поддерживается через контекст постоянства времени выполнения. См. https://docs.mongodb.com/mongoid/current/tutorials/mongoid-persistence/#runtime -persistence-options .

...