0

データベースにシリアル化された列を追加しました...

class AddRegQuestionsColumnToUsers < ActiveRecord::Migration
   def change
   add_column :users, :reg_questions, :text
  end
end  

class User < ActiveRecord::Base
     attr_accessible :reg_questions
     serialize :reg_questions, hash
end

rake db:migrate を実行しました

次に、レールコンソールのフィールドにハッシュを渡そうとしました...

[1] pry(main)> a=User.new
 => #<User:0x3ffa10aef3e0>

[2] pry(main)> a.reg_questions={"9"=>"Yes", "10"=>"Yes", "11"=>"Yes", "12"=>"Yes", "13"=>"Yes", "14"=>"Yes", "15"=>"Yes", "16"=>"Yes"}
=> {"9"=>"Yes",
   "10"=>"Yes",
   "11"=>"Yes",
   "12"=>"Yes",
   "13"=>"Yes",
   "14"=>"Yes",
   "15"=>"Yes",
   "16"=>"Yes"}

[3] pry(main)> a.save
(0.1ms)  begin transaction
(0.1ms)  rollback transaction
 => false`

私は何を間違っていますか?

4

2 に答える 2

0

確かに、シリアル化する必要がありますHash

于 2013-04-06T13:40:31.210 に答える
0

この問題の解決策は、保存に必要な検証を完全に入力していなかったことです。私が追加したシリアライズされたフィールドとは何の関係もありませんでした。

a.save provided...

@messages=
{ :email=>["can't be blank", 
           "can't be blank"],
 :password=>["can't be blank"]}

Rossta は、.errors を使用して保存エラーをトラブルシューティングする良い方法を提供しました。

ダナ、私はハッシュの有無にかかわらずテストしましたが、どちらの場合でも機能するようでした. ご意見ありがとうございます。

みんなありがとう。

于 2013-04-06T23:12:13.553 に答える