Ruby 迁移后未创建Sinatra db表

Ruby 迁移后未创建Sinatra db表,ruby,activerecord,sinatra,psql,sinatra-activerecord,Ruby,Activerecord,Sinatra,Psql,Sinatra Activerecord,我正在尝试使用Sinatra和Sinatra/active record创建活动记录,我的迁移正在迁移到Postgres数据库中,但没有在数据库中创建表,我查看了所有可能的堆栈溢出解决方案,但没有用。我甚至尝试从db/migrate文件夹中删除我的迁移文件,但输出仍然相同。一定是什么错误 Gemfile source 'https://rubygems.org' gem "sinatra" gem "pg" #for postgres gem "activerecord" gem "s

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

Gemfile

source 'https://rubygems.org'

gem "sinatra"
gem "pg"    #for postgres
gem "activerecord" 
gem "sinatra-activerecord"
config.ru

require "./app"
run Sinatra::Application
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
user@user-Inspiron-5520:~/rails-apps/project1$ rake db:migrate
== 20150704053019 CreateNotes: migrating      ======================================
== 20150704053019 CreateNotes: migrated (0.0000s)   =============================
rakefile.rb

require "./app"
require "sinatra/activerecord/rake"
class CreateNotes < ActiveRecord::Migration
  def change
  end
end
app.rb

require "./app"
run Sinatra::Application
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
user@user-Inspiron-5520:~/rails-apps/project1$ rake db:migrate
== 20150704053019 CreateNotes: migrating      ======================================
== 20150704053019 CreateNotes: migrated (0.0000s)   =============================
db输出(psql)

(1排)

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

编辑

迁移文件20150704053019\u create\u notes.rb

require "./app"
require "sinatra/activerecord/rake"
class CreateNotes < ActiveRecord::Migration
  def change
  end
end
class CreateNotes
首先,我想指出@limekin是第一个得到答案的人,他评论道:


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

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


因此,要解决您的问题,只需将应用程序文件中的函数向上移动到迁移文件中的更改函数中。

我猜您已经尝试过执行
rake db:rollback
,然后重新运行了吗?您可以发布迁移文件吗?您用于创建notes表的迁移实际上保存在
app.rb
中。但是migrate任务在
db/migrate
中查找迁移。如果您在底部提供的迁移文件位于正确的目录中,请将迁移定义从app.rb移动到那里。非常感谢,它正在工作,我理解我的错误。首先,我没有为我的应用程序制定任何适当的工作流程和文件夹结构,因为它看起来很凌乱。@limekin我建议你把它作为一个答案,因为Ankita.P显然觉得它很有用,并且会接受它,这样你就可以得到代表。