0

基本的にフォームを介して db テーブルと対話する Web アプリに取り組んでいます。最近、いくつかの変更を加える必要があり、その結果、db テーブルに別の列が追加されました。開発に RubyMine を使用していますが、新しい列が含まれるようにモデルを更新する方法がわかりません。次のようにモデル内に追加しました。

class Student < ActiveRecord::Base
attr_accessible :f_name, :floor_pref, :l_name, :is_active

validates_presence_of :f_name, :floor_pref, :l_name
end

schema.rb 内にも追加しました。

ActiveRecord::Schema.define(:version => 20130620140537) do

create_table "students", :force => true do |t|
t.string   "f_name"
t.string   "l_name"
t.string   "floor_pref"
t.boolean "is_active"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

end

また、移行内でも次のようになります。

class CreateStudents < ActiveRecord::Migration
def change
create_table :students do |t|
  t.string :f_name
  t.string :l_name
  t.string :floor_pref
  t.boolean :is_active

  t.timestamps
end
end
end

問題は、Rails コンソールを実行してモデル オブジェクトを検索すると、追加した新しい列 (:is_active) が表示されないことです。古い列のみが表示されます。

>> Student
Loading development environment (Rails 3.2.13)
Switch to inspect mode.
Student(id: integer, f_name: string, l_name: string, floor_pref: string, created_at:    datetime, updated_at: datetime)

私は何が欠けていますか?

4

3 に答える 3

1

これは、テーブルに新しい列を追加する正しい方法ではありません。コンソールを開いて次のコマンドを実行した後rails g migration add_column_name_to_table column_name:type、 bundle exec rake を実行しますrake db:migrate。物を押し込むだけではダメです。

于 2013-07-18T16:35:41.733 に答える
0

postedon例:列を posts テーブルに追加する場合:

rails g migration AddPostedOnToPosts  posted_on:date

これにより、移行ファイルに列が自動的に追加されます。

于 2014-10-04T13:00:50.537 に答える