2014-09-23 2 views
1

레일에 기본 개체를 만드는 가장 좋은 방법을 알고 싶습니다. 다음과 같은 방법으로 기본 관리자를 만들었습니다.레일에 기본 개체를 만드는 올바른 방법

응용 프로그램/서비스/default_object_creation/create_default_admin_service.rb

class DefaultObjectCreation::AdminService 
    def self.create 
    Admin.create email: ENV["ADMIN_EMAIL"], password: ENV["ADMIN_PASS"] 
    end 
end 

데시벨/seeds.rb

DefaultObjectCreation::AdminService.create 

dB/*************/마이그레이션 * _device_create_admins.rb

class DeviseCreateAdmins < ActiveRecord::Migration 
    def change 
    create_table(:admins) do |t| 
     ## Database authenticatable 
     t.string :email,    null: false, default: "" 
     t.string :encrypted_password, null: false, default: "" 
     t.string :name,    null: false, default: "" 

     ## Rememberable 
     t.datetime :remember_created_at 

     t.timestamps 
    end 

    add_index :admins, :email,    unique: true 

    DefaultObjectCreation::AdminService.create 
    end 
end 

더 나은 졸 경우 궁금했다 ü 서비스에서이 모든 객체를 가지고있어서 행복하지 않기 때문에.

답변

0

초기 db seed 외부에서이 논리를 사용하지 않을 경우 논리를 서비스에서 seeds.rb로 제거 할 수 있습니다.

+0

그러나 나는 그것을 마이그레이션에서 원한다. 그리고 나는 항상 그렇게 간단하지 않기 때문에 시드와 마이그레이션에서 객체 생성을 복사하는 것이 좋은 생각이라고 생각한다. – Spike886

관련 문제