2017-04-09 17 views
0

私はRubyでスタンドアロンプ​​ロジェクトを作成しています。レールと同じマイグレーションをしたいので、宝石をインストールしましたstandalone-migrations`clear_transaction_record_state ':未定義メソッド` []' for nil:レコード作成時のNilClass Ruby

rake db:new_migration name=flower_type_migration 

class FlowerTypeMigration < ActiveRecord::Migration 
    def change 
    create_table :flowerTypes do |t| 
     t.string :type 
    end 
end 
end 

rake db:migrate 

それはすくいデシベルのように思える:私はpsqlでデータベースとテーブルを見ることができるので、移行が正常に動作します私は、そこに私は私の最初の移行を作成する方法このconfig.yml development: adapter: postgresql database: gametour encoding: utf8 host: localhost username: tylo password: ~

を使用して自分のデータベースを作成しました。

が、私はルビーでレコードを作成しよう:

FlowerTypes.create(:type => "test"} 

私はこのエラーを取得:

/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:425:in 'clear_transaction_record_state': undefined method '[]' for nil:NilClass (NoMethodError) 
from /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:339:in 'ensure in rollback_active_record_state!' 
from /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:339:in 'rollback_active_record_state!' 
from /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:318:in 'save' 
from /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/suppressor.rb:41:in 'save' 
from /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/persistence.rb:34:in 'create' 

私は自分自身に権限を付与しようとした(タイロ)およびPUBLICにまだ同じエラーが発生します。

私は何かが欠落しているに違いありませんが、これに対する解決策はありますか?

+0

'SELECT * FROM" flowerTypes ";'を実行するとどうなりますか?引用符で囲まれていない識別子はPostgreSQLで小文字に変換されるので、大文字と小文字の混在したテーブル名を作成する場合は、どこにでも引用符を付ける必要があります。 –

+0

それは引用符と一緒に働いたそう、笑。私はこの問題がルビー1に関連していると思ったが、そうではないように思える。ありがとうbtw私はそれを知らなかった。 – TyLO

+0

(1)PostgreSQLのベストプラクティスは、テーブル名(および他の識別子)を小文字で作成してアンダースコアを使用して単語を区切っているため、引用を心配する必要がありません。 (2)そのテーブルに 'name'カラムはありませんが、' name'でレコードを作成しようとしています。 –

答えて

0

私はこのエラーが出ている理由を理解しています。私のルビークラスの "初期化"のために、私はそれが "普通の"ものを上書きすると思います。

関連する問題