0

Ruby on Rails は初めてです。ユーザーの作成と呼ばれる移行があります

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.column :username, :string,        :limit => 25, :default => "", :null => false
      t.column :hashed_password, :string, :limit => 40, :default => "", :null => false
      t.column :first_name, :string,      :limit => 25, :default => "", :null => false
      t.column :last_name, :string,       :limit => 40, :default => "", :null => false
      t.column :email, :string,           :limit => 50, :default => "", :null => false
      t.column :display_name, :string,    :limit => 25, :default => "", :null => false
      t.column :user_level, :integer,     :limit => 3,  :default => 0,  :null => false
    end

 User.create(:username=>'test',:hashed_password=>'test',:first_name=>'test',:last_name=>'test',:email=>'test@test.com',:display_name=> 'test',:user_level=>9)  
  end
end

実行rake db:migrateすると、上記の列でテーブルが作成されますが、テストデータはありません

mysql>select * from users;
Empty set (0.00 sec)

EDITデータベース全体を削除して移行を再開したところ、次のエラーが表示されました。

rake aborted!
An error has occurred, all later migrations canceled:

Can't mass-assign protected attributes: username, hashed_password, first_name, last_name, email, display_name, user_level

私は何を間違っていますか助けてください? ありがとうございました。

4

3 に答える 3

1

追加

attr_accessible :username, :hashed_password, :first_name, :last_name, :email, :display_name, :user_level

あなたのuser.rbに

于 2013-11-04T10:07:51.347 に答える
0

これは、ユーザーが param ハッシュを介してオブジェクトを作成または更新することを禁止する Rails の方法です。attr_accessibleモデルのようにUser 属性を指定する必要があります。

例 :

class User
 attr_accessible :username, :firstname (etc)
end

Mass Assignment の詳細については、こちらをご覧ください。

于 2013-11-04T10:01:22.327 に答える
0

テスト環境に関する回答を完了するだけです。実行rake db:test:prepareして移行を確認し、スキーマをロードできます。

于 2013-11-04T10:59:46.550 に答える