迁移后未创建Sinatra db表

时间:2015-07-04 05:52:03

标签: ruby activerecord sinatra psql sinatra-activerecord

我正在尝试使用Sinatra和Sinatra / active记录创建活动记录,我的迁移正在迁移到Postgres数据库,但是没有在数据库中创建表,我在堆栈溢出时经历了所有可能的解决方案但是它的没用。我甚至尝试从db / migrate文件夹中删除我的迁移文件,但仍然是相同的输出。什么一定是错误

的Gemfile

WinSet_Click_Through(AutoHotKey2, T="254")

config.ru

source 'https://rubygems.org'

gem "sinatra"
gem "pg"    #for postgres
gem "activerecord" 
gem "sinatra-activerecord"

rakefile.rb

require "./app"
run Sinatra::Application

app.rb

require "./app"
require "sinatra/activerecord/rake"

迁移输出

require 'sinatra'
require 'sinatra/activerecord' 
db = URI.parse('postgres://project1:project1@localhost/*****')
ActiveRecord::Base.establish_connection(
  :adapter  => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
  :host     => db.host,
  :username => db.user,
  :password => db.password,
  :database => db.path[1..-1],
  :encoding => 'utf8'
 )


class Note < ActiveRecord::Base
end

class CreateNotes < ActiveRecord::Migration
  def up
    create_table :notes do |t|
        t.string    :title
        t.text  :body
        t.timestamps
    end 
  end
  def down
    drop_table  :notes
  end
end

db output(psql)

user@user-Inspiron-5520:~/rails-apps/project1$ rake db:migrate
== 20150704053019 CreateNotes: migrating      ======================================
== 20150704053019 CreateNotes: migrated (0.0000s)   =============================

(1行)

注意: Project1用户是拥有所有权限的超级用户

修改

迁移文件20150704053019_create_notes.rb

\dt

           List of relations
 Schema |       Name        | Type  |   Owner   
--------+-------------------+-------+-----------
 public | schema_migrations | table | project1
(1 row)

project1=# select * from schema_migrations;
   version     
----------------
20150704053019

1 个答案:

答案 0 :(得分:2)

我首先要注意的是@limekin是第一个得到答案的人,评论道:

  

用于创建notes表的迁移实际上保存在app.rb中。但迁移任务会在db / migrate中查找迁移。如果您在底部提供的迁移文件位于正确的目录中,则将迁移定义从app.rb移动到那里。

我将详细介绍一下。用于创建表的函数属于迁移文件,因为迁移是创建,更改和删除表,列和记录的。

因此,要解决您的问题,只需将您的应用文件中的功能移动到迁移文件中的更改功能。