ActiveForce自动生成Schema.rb文件,其中force :: cascade删除了我的记录

问题描述 投票:-1回答:1

我正在使用ActiveRecord创建Sinatra应用程序以保留数据。当我运行rake db:migrate时,它会自动生成一个schema.rb文件,该文件包含具有force :: cascade的表名。这不会让我保存/保留我的数据。如果我删除此文件,我可以保存/保留数据。但是,每次迁移都会生成此架构文件。我不知道如何阻止这种情况的发生。

class CreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t| 
      t.string :name 
      t.string :email 
      t.string :password_digest 
  end
end 
end
require "./config/environment"
require "./app/models/user"
class UserC < Sinatra::Base

  configure do
    set :views, "app/views"
    enable :sessions
    set :session_secret, "password_security"
  end

end

require "bundler" 
Bundler.require

ActiveRecord::Base.establish_connection(
  :adapter => "sqlite3",
  :database => "development.sqlite"
)

require_all 'app'
require_all 'db'
require_relative './config/environment'

use Rack::MethodOverride
#use Rack::Session::Cookie
run UserController
#gemfile # frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
gem 'activerecord', :require => 'active_record'

gem 'pry'
gem 'pry-nav'
gem 'bcrypt'
gem 'rake'
gem 'require_all'
gem 'rack_session_access'
gem 'shotgun'
gem 'sinatra'
gem 'sinatra-activerecord', :require => 'sinatra/activerecord'
gem 'sqlite3'
gem 'thin'
gem 'tux' 
ruby activerecord sinatra sinatra-activerecord
1个回答
0
投票

我将其留给将来的用户使用,这些用户在构建自定义Sinatra ActiveRecord应用程序时遇到令人困惑的错误。

汲取的教训是确切地知道您所有宝石的作用。在我的问题中,错误来自环境文件。添加了require_all“ db”是因为我认为require_all已使我的应用访问指定的文件。从字面上看,require_all将运行该文件。重要的是要注意,此环境文件针对向数据库发出的每个请求都运行。因此,为每个获取请求运行了包含create_table文件的db文件夹。删除require_all'db'后,我的应用程序开始正常运行。

© www.soinside.com 2019 - 2024. All rights reserved.