Проблема записи MySQL активной записи во вновь созданную таблицу - PullRequest
0 голосов
/ 02 августа 2011

Мой код:

# require gems
require 'rubygems'
require 'active_record'

# Start connetion to the server
ActiveRecord::Base.establish_connection(  
  :adapter => "mysql",  
  :host => "localhost",
  :user => "root",
  :password => "password", 
  :database => "data"
)

# Create the table
ActiveRecord::Schema.define do
  create_table :datatable do |table|
    table.column :date, :string
    table.column :word, :string
    table.column :website, :string
  end
end

class Table < ActiveRecord::Base; end

Table.create(:date => datenow, :word => someword, :website => mywebsite)
puts "code completed"

И я получаю сообщение об ошибке, когда код хочет записать в таблицу:

path/to/mysql_adapter.rb:287:in 'query': Table 'test.tables' doesn't exist (Mysql::Error)

Если я создаю таблицу, которая называется таблицей в базе данных (данных), то все мои данные помещаются туда. Я хочу, чтобы он был записан в таблицу (с данными), которую я только что создал. Как я могу это сделать и устранить ошибку?

1 Ответ

2 голосов
/ 02 августа 2011

Ошибка ожидается.Вы получаете доступ к таблице с именем table, но создаете таблицу с именем datatable.

Чтобы настроить модель Table на использование таблицы datatable, используйте ActiveRecord :: Base.set_table_name примерно так:

class Table < ActiveRecord::Base
  set_table_name 'datatable'    
end

В качестве альтернативы вы можете переименовать вашу модель в Datatable.

Однако я бы посоветовал переименовать ее во что-то совершенно другое.Если вы на самом деле не храните данные о таблицах, ваша модель, вероятно, не должна называться Table.На ум приходит WebsiteWord или WordOccurrence или, может быть, просто Word.У меня такое чувство, что это спасет тебя от боли в долгосрочной перспективе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...