私は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にまだ同じエラーが発生します。
私は何かが欠落しているに違いありませんが、これに対する解決策はありますか?
'SELECT * FROM" flowerTypes ";'を実行するとどうなりますか?引用符で囲まれていない識別子はPostgreSQLで小文字に変換されるので、大文字と小文字の混在したテーブル名を作成する場合は、どこにでも引用符を付ける必要があります。 –
それは引用符と一緒に働いたそう、笑。私はこの問題がルビー1に関連していると思ったが、そうではないように思える。ありがとうbtw私はそれを知らなかった。 – TyLO
(1)PostgreSQLのベストプラクティスは、テーブル名(および他の識別子)を小文字で作成してアンダースコアを使用して単語を区切っているため、引用を心配する必要がありません。 (2)そのテーブルに 'name'カラムはありませんが、' name'でレコードを作成しようとしています。 –