ошибка новой записи в консоли rails

#ruby-on-rails #rails-console

#ruby-on-rails #рельсы-консоль

Вопрос:

Очень похожий вопрос уже задавался, но я все равно не могу решить проблему. Я пытаюсь создать новую запись в консоли rails и получаю эту ошибку:

     2.1.2 :001 > subject = Subject.new
Mysql2::Error: Table 'simple_cms_development.subjects' doesn't exist: SHOW FULL FIELDS FROM `subjects`
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'simple_cms_development.subjects' doesn't exist: SHOW FULL FIELDS FROM `subjects`
  

Может кто-нибудь, пожалуйста, очень конкретно рассказать мне, что мне делать?

Вот subject.rb:

 class Subject < ActiveRecord::Base
end
  

и schema.rb:

 ActiveRecord::Schema.define(version: 20140617074943) do

  create_table "admin_users", force: true do |t|
    t.string   "first_name", limit: 25
    t.string   "last_name",  limit: 50
    t.string   "email",                 default: "", null: false
    t.string   "username",   limit: 25
    t.string   "password",   limit: 40
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "pages", force: true do |t|
    t.integer  "subject_id"
    t.string   "name"
    t.string   "permalink"
    t.integer  "position"
    t.boolean  "visible",    default: false
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "pages", ["permalink"], name: "index_pages_on_permalink", using: :btree
  add_index "pages", ["subject_id"], name: "index_pages_on_subject_id", using: :btree

  create_table "sections", force: true do |t|
    t.integer  "page_id"
    t.string   "name"
    t.integer  "position"
    t.boolean  "visible",      default: false
    t.string   "content_tipe"
    t.text     "content"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "sections", ["page_id"], name: "index_sections_on_page_id", using: :btree

end
  

create_subjects.rb:

 class CreateSubjects < ActiveRecord::Migration
  def up
    create_table :subjects do |t|
      t.string "name"
      t.integer "position"
      t.boolean "visible" :default => false
      t.timestamps
    end
  end

  def down
        drop_table :subjects
  end

end
  

Комментарии:

1. Мы не сможем многое сделать, пока вы не опубликуете больше кода. Отправьте свои subject.rb schema.rb файлы и в качестве отправной точки.

2. в журнале указано Table 'simple_cms_development.subjects' doesn't exist , что вы запустили rake db:migrate ?

3. Я с gotva. Мне кажется, что таблица еще не создана в вашей базе данных.

4. Спасибо. rake db: миграция не помогает. Я опубликовал subject.rb и schema.rb в своем вопросе.

5. Также вам может понадобиться запятая в ` t.логическое значение «видимый»: default => false` как в ` t.логическое значение «видимый» : default => false`

Ответ №1:

Добавьте запятую в

 t.boolean "visible" :default => false`
  

как в

 t.boolean "visible", :default => false`
  

а затем запустите rake db:migrate

Убедитесь, что config/database.yml в файле есть допустимая запись для подключения к базе данных на вашем компьютере. Посмотрите на development строфу.

Подробнее о миграции на guides.rubyonrails.org/migrations.html

Подробнее о настройке базы данных и файла database.yml на

http://edgeguides.rubyonrails.org/configuring.html#configuring-a-database

Ответ №2:

Вам необходимо создать таблицу subjects, которая определяет атрибуты, которые вы хотите сохранить в экземплярах Subject.

Итак, скажем, вам нужны заголовок и описание. Используйте эту команду для создания миграции:

 rails generate migration subjects title:string description:text
  

А затем запустите команду

 rake db:migrate
  

Затем попробуйте свою команду Subject.new

В качестве альтернативы, если вы не хотите сохранять какие-либо атрибуты subject, измените определение класса subject на:

 class Subject

end