ActiveRecord автоматически создает файл Schema.rb с помощью force :: cascade, который удаляет мои записи - PullRequest
0 голосов
/ 29 октября 2019

Я создаю приложение Sinatra с ActiveRecord для сохранения данных. Когда я запускаю 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' 

1 Ответ

0 голосов
/ 30 октября 2019

Я оставляю это для будущих пользователей, у которых есть запутанные ошибки при создании пользовательского приложения Sinatra ActiveRecord.

Извлеченный урок состоит в том, чтобы точно знать, что делают все ваши драгоценные камни. В моем вопросе ошибка исходила из файла среды. require_all "db" был добавлен, потому что я предполагал, что require_all дал моему приложению доступ к указанным файлам. require_all буквально запустит этот файл. Важно отметить, что этот файл среды запускается для каждого запроса к БД. Таким образом, папка db, которая содержит файл для create_table, запускалась для каждого сделанного запроса get. После удаления require_all 'db' мое приложение стало работать отлично.

...