2014-12-07 1 views
2

Я установил файл схемы, но не смог определить файл семян для арендатора, чтобы он мог работать только для миграции арендатора. Также я пытаюсь создать схему после создания пользователя и создания его арендатора.Как определить файл семян для Rails Apartment

require 'apartment/elevators/subdomain' 

    # 
    # Apartment Configuration 
    # 
    Apartment.configure do |config| 

     config.excluded_models = ["Admin","Contractor", "ContractorPackage","ContractorTransaction","Country","Currency","Faq","FaqCategory","Language","Package","Page","PaymentType","Setting","TempTransaction","Testimonial","Timezone","Tutorial"] 

     # use postgres schemas? 
     config.use_schemas = true 

     config.tenant_names = lambda{ Contractor.pluck("CONCAT('contractor_',id)") } 
    end 

    # overriding module schema file here 
    module Apartment 

     class << self 
      def database_schema_file 
       @database_schema_file=Rails.root.join('db', 'contractor_schema.rb') 
      end 
     end 

    end 


    Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain' 
+0

Rake дб: семя будет делать это. –

+0

Он также будет использоваться для публичной схемы. Я хочу запускать только для пользователя/арендатора –

+0

Здесь много кода, большая часть его комментариев; вы можете очистить комментарии, чтобы упростить то, что вы представляете, и ограничить код тем, что непосредственно относится к вопросу (здесь может быть весь код). – rfornal

ответ

14

В файле seeds.rb заверните свой код в чек для текущего арендатора. У меня нет где-нибудь, чтобы проверить это прямо сейчас, но следующий код должен получить закрытия:

unless Apartment::Tenant.current_tenant == 'public' 
    #Insert seed data 
end 

Если вы хотите, чтобы семя арендатора вручную, вы должны быть в состоянии запустить Apartment::Tenant.seed

Чтобы получить файл seeds.rb для запуска при создании арендатора добавить:

config.seed_after_create = true 

в файл инициализации квартиры.

Для примера:

Apartment.configure do |config| 

    config.excluded_models = ["Admin","Contractor", "ContractorPackage","ContractorTransaction","Country","Currency","Faq","FaqCategory","Language","Package","Page","PaymentType","Setting","TempTransaction","Testimonial","Timezone","Tutorial"] 

    # use postgres schemas? 
    config.use_schemas = true 

    config.tenant_names = lambda{ Contractor.pluck("CONCAT('contractor_',id)") } 

    config.seed_after_create = true 
end 
+1

, но как мы можем запускать команду семени из модели? Скажем, в пользовательском модуле есть функция after_create: create_schema def create_schema #create команда арендатора # >> Как я могу запустить команду семени здесь ????? end –

+1

Только что добавила информацию о том, как это сделать – rdubya

+0

Не работает, говоря об отказе транзакции –

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

  • Нет связанных вопросов^_^