2015-11-10 6 views
-4

Я новичок в рубине. Я пробовал свои руки на sqlite3. У меня есть 2 столовых книг и пользователей, пользователи могут иметь книги и книги манти, принадлежащие пользователю, которые установлены в программе. однако я получаю следующие ошибки при запуске файла mu Файлы программы (x86) /Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-active_record/connection_adapters/sqlite3_adapter.rb:511:in table_structure': Could not find table 'libusers' (ActiveRecord::StatementInvalid) from C:/Program Files (x86)/Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/sqlite3_adapter.rb:385:in столбцы ' из C:/Program Files (x86) /Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/schema_cache.rb:43:in columns' from C:/Program Files (x86)/Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/attributes.rb:93:in столбцы ' из C:/Program Files (x86) /Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/attributes.rb:98:in columns_hash' from C:/Program Files (x86)/Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/inheritance.rb:205:in subclass_from_attributes? ' из C:/Program Files (x86) /Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/inheritance.rb:54:in new' from C:/Program Files (x86)/Ruby200-x64/lib/ruby/gems/2.0.0/gems/activerecord-4.2.4/lib/active_record/persistence.rb:33:in создать»Ошибка активной записи в рубине

я читал об этих ошибок и побежал грабли БД: мигрировать он говорит, нет файла грабли не найдено я застрял и нуждаются в помощи

require 'active_record' 
require 'sqlite3' 
`enter code here`ActiveRecord::Base.establish_connection(:adapter => "sqlite3",:database => "memory") 
    class Clean < ActiveRecord::Migration 
    def self.up 
    #ActiveRecord::Schema.define do 
    create_table :users do |table| 
    table.column :name, :string 
    table.column :age, :integer 
    table.column :books_borrowed,:integer 
    end 
    create_table :books do |table| 
    table.column :borrower, :string 
    table.column :title, :string 
    table.column :borrow_date, :string 
    table.column :due_date, :string 
end 
    end 
    def self.down 
    drop_table :users 
    drop_table :books 
    end 
end 
class Libuser < ActiveRecord::Base 
has_many :books 
end 
class Books< ActiveRecord::Base 
belongs_to :user 
end 
#Clean.down 
Clean.up 

user= Libuser.create(:name=>"Megna", :age=>25, :books_borrowed=>2) 
user.books.create(:title=>"immortals of meluha", :borrow_date=>"12 jan 2015", :due_date=>"22 jan 2015") 
user.books.create(:title=>"secret of nagas", :borrow_date=>"24 jan 2015", :due_date=>"2 Feb 2015") 

user= Libuser.create(:name=>"sandhya", :age=>27, :books_borrowed=>3) 
user.books.create(:title=>"ugly duckling ", :borrow_date=>"12 feb 2015", :due_date=>"22 feb 2015") 
user.books.create(:title=>"Little red riding Hood", :borrow_date=>"24 march 2015", :due_date=>"2 april 2015") 
user.books.create(:title=>"Little red riding Hood", :borrow_date=>"12 april 2015", :due_date=>"22 april 2015 

«)

заранее спасибо

ответ

0

Ваша таблица называется» Пользователи ", а не" Либусы ". Если вы замените Libuser w с пользователем это работает?

Для того, чтобы «Libuser» работал, вам понадобится таблица под названием Libusers в вашей базе данных.

Будьте осторожны с множественными числами - ваши модели ActiveRecord должны быть уникальными (User, Book), а имена ваших таблиц должны быть множественными (пользователи, книги).

+0

изменил Libuser для пользователя, все еще получаю ошибку, теперь говорит, что не найти таблицы "пользователей (ActiveRecord :: StatementInvalid) –

+0

Я только что видел ваш комментарий о рейке. Вы находитесь в каталоге, который включает ваш файл рейка? Поэтому откройте терминал в том месте, где находится файл рейка, затем выполните rake db: migrate. Чтобы проверить, находитесь ли вы в правильном месте, попробуйте rake -T (он отобразит все возможные команды рейка) – Valerie

+0

да, в каталоге bin я могу видеть 2 файла рейка, 1 файл рейка и один пакетный файл Windows, я побежал моя команда rake db в этой папке, но она говорит, что файл рейка не найден. rake -T дает мне рейк прерван! No Rakefile не найден (ищет: rakefile, Rakefile, rakefile.rb, Rakefile.rb) –

0

По умолчанию active_record предполагает, что класс MyModel (в единственном числе, CamelCase) карты в таблице базы данных my_models (во множественном числе, подчеркнул), поэтому Libuser следует сопоставить таблицу libusers, не users.

Если вы действительно хотите Libuser сопоставить с users (почему?), Вы можете сделать это:

class Libuser < ActiveRecord::Base 
    self.table_name = 'users' 

    # Other stuff ... 
end 
Смежные вопросы