0

Rails docs http://api.rubyonrails.org/classes/ActiveRecord/Base.htmlによると、シリアル化メソッドを使用してデータベースに配列を格納できます

 class User < ActiveRecord::Base
      serialize :preferences, Hash
    end

    user = User.create(:preferences => %w( one two three ))

私のちっぽけなアプリケーションでは、質問モデルの回答列をシリアル化しました。これは、回答の選択肢が複数あるためです。

class Question < ActiveRecord::Base
  attr_accessible :question, :link, :answers, :correctanswers

  serialize :answers

end

それをテストするためにデータベースをシードしようとして、私はこれをしました...

Question.create!( question: "what is R's favorite color", answers: "a" => %w( red green blue ), correctanswer: "blue", link => "http://janesblog.com")

ただし、レーキ db.seed は、構文が間違っていることを示唆するあらゆる種類のエラーで中止されました

/Users/mm/Sites/ljk/db/seeds.rb:17: syntax error, unexpected tASSOC, expecting ')'
...avorite color", answers: "a" => %w( red green blue ), correc...
...                               ^
/Users/mm/Sites/ljk/db/seeds.rb:17: syntax error, unexpected ',', expecting $end
...s: "a" => %w( red green blue ), correctanswer: "blue", link ...

誰でも正しい構文を支援できますか? テーブル

class CreateQuestions < ActiveRecord::Migration
  def change
    create_table :questions do |t|

      t.string :question
      t.string :link
      t.text   :answers
      t.string :correctanswer


      t.timestamps
    end
  end
end
4

2 に答える 2

1

これは有効なルビーではありません:

answers: "a" => %w( red green blue )

あなたはこれを行うことができます:

answers: { "a" => %w( red green blue ) }
于 2013-02-02T22:43:00.837 に答える
0

私はあなたが欲しいと思います:

Question.create!(
  question: "what is R's favorite color",
  answers: %w( red green blue ),
  correctanswer: "blue",
  link: "http://janesblog.com"
)
于 2013-02-02T22:45:50.433 に答える