1

У меня есть существующая база данных удаленных баз, и я пытаюсь получить доступ, что из моего приложения рельсов у меня есть это в моей database.yml развития:не удается получить доступ к Mysql модели в рельсах консоли

development: 
    adapter: mysql2 
    encoding: utf8 
    database: mydb 
    username: myusername 
    password: [email protected]#$%@! 
    host: IP for my DB 
    port: 3306 
    pool: 5 
    socket: /tmp/mysql.sock 
    timeout: 5000 

, когда я выполните следующую команду в моей рельсах консоли

ActiveRecord::Base.connection.tables

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

City 
NameError: uninitialized constant City from (irb):12 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
    from /home/shreyas/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

Любые предложения, что я делаю неправильно? Я хочу получить доступ к удаленной базе данных в своем приложении, я пока не создал никаких моделей. Нужно ли создавать все модели? Я вижу полную структуру db в файле schema.rb.

+0

Это не выглядит как ошибка MySQL, показать свои модели – ahmet

+0

Это не ошибка MySQL, когда я пытаюсь получить доступ к таблицам моя БД. Подобно City - это имя таблицы, поэтому, когда я пытаюсь получить доступ к city.first или что-либо, это показывает мне вышеприведенную ошибку. –

+0

Могу ли я увидеть вашу модель города – ahmet

ответ

2

Для этого в консоли вы можете написать код, как

rails g model City 

это создаст модель города для вас. Как вы сказали, у вас есть существующая таблица, поэтому вам не нужна миграция, сгенерированная синтаксисом выше. Поэтому вы должны удалить сгенерированную миграцию из db/migrate.

ИЛИ иначе вы можете сделать одну вещь, просто добавьте файл city.rb в приложение/модели. Затем добавьте код

class City < ActiveRecord::Base 
    # if your table name is cities, then you don't need to do any thing. 
    # if your table name is something else rather than cities then place the following commented code 
    # self.table_name = 'your_existing_city_table_name' 

    # then you have to add columns of the table as attr_accessible. for e.g. you have name, state_id in there 
    attr_accessible :name, :state_id 
end 

Надеется, что это будет работать для вас :)

+0

@BachanSmuthy Я выполнил шаги, которые название таблицы в моем db является городом (малый регистр), но когда я пытаюсь получить доступ к Сити, он говорит, что City (Table doesn ' t существует), и если я использую город, это дает мне ту же ошибку. :( –

+1

Вы добавили self.table_name = 'city' в модели City? –

+0

Вы можете возвысить вопрос, если вы не возражаете;) и у меня есть еще один вопрос в моей очереди, если вы можете помочь http://stackoverflow.com/questions/17185439/huge-json-object-to-excel –

0

Вы можете, конечно, получить доступ к своим данным внутри своей базы данных mysql, но для того, чтобы использовать его в качестве представления объекта, вам необходимо создать model, связанный с вашими данными.

class City < ActiveRecord::Base 
end 

Таким образом ActiveRecord будет делать тяжелую работу за вас, чтобы «ссылка» ваш объект данных в базе данных (предполагается, что имя модели правильны, то здесь вы должны иметь таблицу с именем cities).

Вы тогда будете в состоянии принести города с рельсов консоли

City.all 

Для получения дополнительной информации о ActiveRecord, пожалуйста, обратитесь к http://guides.rubyonrails.org/active_record_querying.html

+0

Итак, как я могу добавить существующие модели в свое приложение. У меня нет миграции, но я вижу всю структуру таблицы в файле schema.rb. И по ошибке я уже очистил базу данных, запустив rake db: schema: load –

+0

не уверен, что понял. Если у вас уже есть база данных, заполненная данными, просто добавьте рубиновые классы (создайте файлы и вставьте код), как я показал выше, чтобы иметь доступ к вашим данным через рубин и активную запись. Тем не менее, не имея миграции, вероятно, будет проблемой для вас в какой-то момент. Например, когда вы нажимаете свой код на своем производственном сервере ... –