2016-05-17 2 views
0

Я пытаюсь подключить внешнюю базу данных MySQL к Rails 4 и читать данные оттуда. Так что я сделал до сих пор:Rails 4 - вытащить данные из внешнего MySQL

  • Создать в lib/primo_db.rb
  • Создать модель models/accountstatus.rb

primo_db.rb

require 'active_record' 
require 'mysql' 

class PrimoDatabase < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection(
    :adapter => 'mysql', 
    :database => '...', 
    :host  => '...', 
    :username => '...', 
    :password => '...' 
) 
end 

account.rb

require 'primo_database' 

    class Account < PrimoDatabase 
     self.table_name = 'account' 
     def self.getdata 

     end 
    end 

И мой вопрос:

  • Как проверить соединение в консоли между ними, потому что, когда я бегу Accountstatus.getdata в рельсах консоли я получаю эту ошибку NameError: uninitialized constant PrimoDatabase

  • И если я бегу ActiveRecod::Base.connection? он возвращается false

Я знаю, что я делаю что-то неправильно, поэтому я буду признателен за любую помощь в этом.

EDITED - смотрите ответ на ПОНИМАЕТ ЧТО Я СДЕЛАЛ НИЖЕ

+0

Попробуйте переименовать 'primo_db.rb' файл' primo_database.rb' так, что имя файла и класса, определенного на нем имеют одинаковое имя – Bustikiller

+0

Вам понадобилось 'lib/primo_db' где-нибудь? – spickermann

+0

@Bustikiller, когда я переименовываю папку, это не помогает, такая же ошибка .. @spickermann Я пытаюсь это сделать, и я не получаю ошибку, когда я набираю 'Accountstatus.getdata' =>' nil', но когда я попробуйте найти что-то по-прежнему: ошибка: не существует: SELECT 'accountstatuses'. * FROM' accountstatuses' – liborza

ответ

0

Хорошо я знаю, где я сделал ошибку.

  • Файл должен быть назван как класс в этом файле так что для меня: account.rb и класса Account < PrimoDatabase
  • Тогда должно быть перед классом require '*.rb' от lib
  • Тогда я должен был добавить self.table_name = 'account' указать таблица
  • Позвони для подключения является Account.connection

Итак им возможность подключения к БД и потянув данные оттуда. Надеюсь, это поможет кому-то.

EDITED мой вопрос правильный ответ