I have a problem with storing array data into one field with PostgreSQL.
here is my environment
Rails version 4.2.0
Ruby version 2.2.0-p0 (x86_64-darwin14)
RubyGems version 2.4.5
Rack version 1.5
and my migration is
class CreateStartups < ActiveRecord::Migration
def change
create_table :startups do |t|
t.string :name, null: false
t.string :email
t.boolean :is_email_verified, null: false, default: false
t.decimal :location_lat, precision: 10, scale: 6
t.decimal :location_lng, precision: 10, scale: 6
t.text :completeness, array: true, default: []
t.datetime :deleted_at
t.timestamps null: false
end
end
end
and model is
class Startup < ActiveRecord::Base
serialize :completeness, Array
validates :name, presence: true
validates :slug, presence: true, allow_blank: false, length: { maximum: 200 }
validates_uniqueness_of :slug
translates :name, :name_ruby, :company_name, :concept, :about_title, :about_detail, :address
end
and what I tried to do was in rails console
[6] pry(main)> Startup.create!(name: 'test', slug: 'test3', completeness: [100, ["test", "test2"]])
(0.1ms) SAVEPOINT active_record_1
Startup Exists (0.3ms) SELECT 1 AS one FROM "startups" WHERE "startups"."slug" = 'test3' LIMIT 1
SQL (0.3ms) INSERT INTO "startups" ("completeness", "slug", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["completeness", nil], ["slug", "test3"], ["created_at", "2015-02-19 10:17:23.355815"], ["updated_at", "2015-02-19 10:17:23.355815"]]
SQL (0.2ms) INSERT INTO "startup_translations" ("locale", "startup_id", "name", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["locale", "ja"], ["startup_id", 4], ["name", "test"], ["created_at", "2015-02-19 10:17:23.364581"], ["updated_at", "2015-02-19 10:17:23.364581"]]
(0.1ms) RELEASE SAVEPOINT active_record_1
=> #<Startup:0x007fd840cc1648
id: 4,
author_id: nil,
slug: "test3",
email: nil,
location_lat: nil,
location_lng: nil,
completeness: [],
deleted_at: nil,
created_at: Thu, 19 Feb 2015 10:17:23 UTC +00:00,
updated_at: Thu, 19 Feb 2015 10:17:23 UTC +00:00>
And what i see is completeness: [] is inserted because generated SQL was
INSERT INTO "startups" ("completeness", "slug", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["completeness", nil], ["slug", "test3"], ["created_at", "2015-02-19 10:17:23.355815"], ["updated_at", "2015-02-19 10:17:23.355815"]]
and completeness is nil even though I passed [100, ["test", "test2"]
could anyone help me out on this??
best,
[100, ["test", "test2"]]and try..completenessin yourschema.rb? I see you used thetexttype in your migration, perhaps this should be changed to typehstore.