RoR - модель против базы данных - PullRequest
1 голос
/ 06 августа 2011

В RoR, когда я, например, запускаю следующую команду:

> rails generate model xyz

И, если я зайду, например, 12345_create_xyzs.rb, я найду что-то похожее наthis:

def self.up
    create_table :xyzs do |t|

Итак, когда я сделал model, я действительно делаю таблицу ?

Но где же база данных ?!

Ответы [ 3 ]

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

Когда вы используете rails generate model zyz, вы говорите Rails сгенерировать несколько файлов для вас.Файл 12345_create_xyzs.rb - это то, что называется миграцией - он содержит инструкции по заполнению базы данных структурой таблицы, связанной с вашей моделью.

Однако вам необходимо убедиться, что БД существует (поэтому, например, в MySql CREATE DATABASE MyDB), и ваш файл database.yml содержит правильную информацию о подключении к этой базе данных.

Если это так, при запуске rake db:migrate задача rake позаботится оперенос структуры вашей модели в базу данных.

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

Когда вы rails generate model xyz, вы будете указывать поля (и другие вещи, такие как индексы базы данных, которые вы хотите), которые таблица xyz будет иметь в базе данных. Таблица представляет модель класс в базе данных.

Чтобы создать эту таблицу в базе данных, вы должны перенести файл определения модели (12345_create_xyzs.rb), используя rake db:migrate.

Модель представлена ​​в коде Rails (т.е. ActiveRecord) как класс в файле с именем app/models/xyz.rb:

class Xyz < ActiveRecord::Base
  ...
end

Вы создаете файл app/models/xyz.rb в дополнение к файлу миграции, созданному выше rails generate model. В этот класс вы помещаете такие вещи, как определение отношений между моделями, добавление ограничений и другого необходимого кода.

1 голос
/ 06 августа 2011

Вам необходимо выполнить команду rake db:migrate для переноса базы данных.Команда rake db:create создает базу данных ...

Доступна дополнительная информация здесь .

Кроме того, база данных должна быть настроена в файл, расположенный здесь:

<your_project>/config/database.yml

Дополнительная информация здесь .В целом, я думаю, что вы действительно должны прочитать " начало работы ".

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