2015-03-29 1 views
2

Я новичок в рубине на рельсах.Как изменить модель db в рубине на рельсах?

Я уже создал все модели и схему, в моей базе данных тоже заполнены поля.

Однако, когда я хочу изменить связь между таблицами или добавить другое поле в таблицу, какие типы команд и в каком порядке я должен запускаться?

, например:

rake db:drop db:create db:migrate db:seed 

я должен генерировать модель таблиц первой?

ответ

0

При создании новой функции в приложении вам нужно спросить себя: «нужна ли этой функции таблица?».

Давайте рассмотрим простой пример: блог приложение

Почтовое приложение блог обычно имеет сообщений стол и автор таблицу.

Теперь скажем, что вы хотите иметь комментарии к своим сообщениям в блоге. Первый вопрос, который нужно задать, - это вам нужна таблица для комментариев, в которой вы будете сохранять каждый комментарий, связанный с каждым сообщением. Ответ: да, вам нужна таблица комментариев, так как вы будете хранить данные в своей базе данных.

команду, чтобы создать новую таблицу комментариев:

rails generate migration create_comments

в db/migration/create_comments.rb вы увидите

class CreateComments < ActiveRecord::Migration 

    def change 
     create_table :comments do |t| 
     end 
    end 
end 

Тогда вы можете смело добавить в эту таблицу любого столбца вам нужно.

Теперь мигрируют с rake db:migrate

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

class Comment < ActiveRecord::Base 

end 

Вы должны сделать соответствующие ассоциации; это важная часть - вы хотите настроить свою архитектуру таким образом, чтобы все ваши приложения могли общаться друг с другом. Взгляните на documentation на ассоциации ActiveRecord.

После этой части вам необходимо настроить маршруты в config/routes.rb и создать контроллер комментарии:

class CommentsController < ApplicationController 
    def create 
    end 
end 

Настройте ваши маршруты так, что когда кто-то комментарии на пост запрос POST будет отправлено создайте действие в своем контроллере комментариев. Посмотрите here для получения дополнительной информации.

Смежные вопросы