2011-10-19 12 views
2

私はRuby on Railsの大胆な世界から始めています。私は足場とモデルの周りに頭を抱えようとしています。 (キュー、私はデザイナーだ)私はレールを使用Rails 3:データベースとスキャフォールドの更新

は足場コマンドに

rails generate scaffold Lesson title:string description:text 

を生成しかし、それはレールに新しいキー、値でレッスンテーブルを更新することは可能でしょうか?

私が試した:

rails generate model Lesson title:string description:text dtstart:datetime 

をしかし、私はデシベルを実行すると:それは失敗し、それをする私の知っている周りの唯一の方法は、足場をすべて削除し、それを再生することがあるの移行。

私はそれが原因で私がコンテンツを削除すると、更新されないのdb/development.sqlite3ファイルであること、だと思う(しかし、イムわからない簡単に解決:)

がなければならないと確信しています手でそれは次にBDを実行します:マイグレーション)一度にevrythingを更新する方法はありますか?

答えて

5

私はあなたが記述何をすべきか方法があるとは思わない - 一般的には、モデルに新しいフィールドを追加したい場合は、あなたが移行を生成したい:

rails g migration AddStartToLesson 

そして、移行ファイルを開きますそれらのフィールドを追加するコードを追加します。これはおそらく、このようなものを見てしまいます。

class AddStartToLesson < ActiveRecord::Migration 
    def self.up 
    add_column :lessons, :start, :datetime 
    end 

    def self.down 
    remove_column :lessons, :start 
    end 
end 

をそして、あなたは、ビューのいくつか更新する必要があります - そのデータを入力するフォームフィールドを取得するには、おそらく_form.html.erbをし、index.htmlを.erbとshow.html.erbを使用して表示します。

+1

1.3移行の変更 移行を作成する際に間違いを犯すことがあります。すでにマイグレーションを実行している場合、マイグレーションを編集してマイグレーションを再度実行することはできません.Railsはマイグレーションをすでに実行していると考え、rake db:migrateを実行すると何も行いません。移行をロールバックする必要があります(rake db:rollbackなど)。移行を編集し、rake db:migrateを実行して修正バージョンを実行する必要があります。 –

+0

@ YannickSchall良い点...新しいマイグレーションを作成するのではなく、モデルを作成するマイグレーションをロールバックして書き換えるほうが簡単です。 – MrTheWalrus

+0

しかし、スキャフォールドを再生成することなく、開発中にデータベーステーブルの構造を変更することは可能ですか? –

0

私はあなたがlesson_paramsをlessons_controller.rbで更新して(少なくとも5つのレールで)、新しいパラメータをビューから渡すことができるようにする必要があると思いますモデル。

関連する問題