2

私は Rails の初心者で、Rails の移行を使用してデータベースに行を挿入するのに問題があります。

class Actions < ActiveRecord::Migration
  def up
    create_table :actions do |t|
      t.integer :channel_id
      t.string :name
      t.text :description
      t.integer :weight

      t.timestamps
    end

    add_index :actions, :channel_id

    Actions.create :name => 'name', :description => '', :weight => 1, :channel_id => 1
  end

このコードを実行すると、次のようになります。

==  Actions: migrating ========================================================
-- create_table(:actions)
   -> 0.0076s
-- add_index(:actions, :channel_id)
   -> 0.0036s
-- create({:name=>"name", :description=>"", :weight=>1, :channel_id=>1})
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: unrecognized token: "{": {:name=>"name", :description=>"", :weight=>1, :channel_id=>1}

アクション モデル:

class Actions < ActiveRecord::Base
  belongs_to :channels
  attr_accessible :name, :description, :weight, :channel_id
end

中括弧がどこから来たのか、なぜ例外が発生するのかわかりません。この問題の解決を誰が手伝ってくれますか?

4

1 に答える 1

3

おっと、あなたの移行クラス名は、アクセスしようとしているモデルの名前と同じようです ( Actions)。このため、モデル クラスの代わりに、移行クラスcreateメソッドが呼び出されます。これはおそらく、ハッシュなどを使用してテーブルを作成しようとします。そのため、そのエラー メッセージが表示されます。

移行クラス (および一貫性のためにそのファイル) の名前を変更すると、正常に動作するはずです。

class CreateActions < ActiveRecord::Migration
于 2012-07-10T20:27:20.727 に答える