2013-07-03 2 views
0

내가 3 열 URL, 가격과 타임 스탬프가있는 테이블을 만들려고하고 생성하지 ... 내가 DB를 실행dB : 마이그레이션 테이블이

class Shp < ActiveRecord::Base 
    def change 
    create_table :shps do |t| 
     t.string :url 
     t.float :price 
     t.timestamps 
    end 
    end 
end 

"까지" "변화"를 모두 시도 : 마이그레이션이 보인다 내가 할 때와 같이 아무 일도하지 말아라.

ActiveRecord::Base.connection.column_names("shps") 

나는 기본 열만있는 테이블을 얻는다.

=> [#<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc8a34 @name="id", @sql_type="INTEGER", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:integer, @default=nil, @primary=nil, @coder=nil>, #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc878c @name="created_at", @sql_type="datetime", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:datetime, @default=nil, @primary=nil, @coder=nil>, #<ActiveRecord::ConnectionAdapters::SQLiteColumn:0x8fc8444 @name="updated_at", @sql_type="datetime", @null=false, @limit=nil, @precision=nil, @scale=nil, @type=:datetime, @default=nil, @primary=nil, @coder=nil>] 
+0

을 당신은 "콜루 (colu)"방법으로 테스트합니다. mn_names "테이블의': shps'의 존재? 어쩌면 당신은 Ruby (PostGreSQL 용 PGAdmin3 등)보다 다른 도구를 통해 확인할 수 있습니다. – MrYoshiji

답변

1

마이그레이션 클래스는 ActiveRecord::Migration 대신 ActiveRecord::Base에서 상속해야합니다. 또한 올바른 디렉토리 (db/migrate)에 저장해야하며 파일 이름에 적절한 타임 스탬프가 있어야합니다.

는 콘솔을 입력해야 모델들 사이에서 마이그레이션을 생성하려면 :

rails g model Shp url:string price:float 

및 마이그레이션을 실행

bundle exec rake db:migrate 

BTW 자신의 편의를 위해 클래스 이름이 더 설명하게하려고합니다.

+0

이것은 저에게 효과적입니다. Shp가 상점을 언급하지 않고 있습니다. – Melbourne2991

1

이 작동합니다 :

응용 프로그램/모델/shp.rb :

class Shp < ActiveRecord::Base 
    set_table_name "shps" 
end 

dB/마이그레이션/2013xxxxxxxxx_create_shps.rb :

class CreateShps < ActiveRecord::Migration 
    def change 
    create_table(:shps) do |t| 
     t.string :url 
     t.float :price 
     t.timestamps 
    end 
    end 
end 

HTH

+0

두 클래스가 같은 파일에 들어갈까요? – Melbourne2991

+0

물론 아닙니다. Ruby on Rails를 사용하고 있기 때문에 어디에 넣어야하는지 알고 있다고 생각합니다 (명확한 설명을 위해 편집 된 원래 답변). –

관련 문제