I'm try to save a hash mapping ids to a number of attempts in my rails app. My migration to the database to accommodate this new column:
class AddMultiWrongToUser < ActiveRecord::Migration
def self.up
add_column :users, :multi_wrong, :string
end
def self.down
remove_column :users, :multi_wrong
end
end
In my model I have:
class User < ActiveRecord::Base
serialize :multi_wrong, Hash
end
But when I use the rails console to test this by doing:
user = User.create()
user.multi_wrong = {"test"=>"123"}
user.save
The output is false. What's going wrong here?
The column type is wrong. You should use Text instead of String. Therefore, your migration should be:
def self.up
add_column :users, :multi_wrong, :text
end
Then Rails will properly convert it into YAML for you (and perform proper serialization). Strings fields are limited in size and will only hold especially-small values.