登录生产:
irb(main):036:0> People.find(7).update_attribute(:all_read,[2,3])
People Load (1.2ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 LIMIT 1 [["id", 7]]
People Load (1.2ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 LIMIT 1 [["id", 7]]
(0.7ms) BEGIN
(0.7ms) BEGIN
(0.7ms) COMMIT
(0.7ms) COMMIT
People Store (29.1ms) {"id":7}
People Store (29.1ms) {"id":7}
=> true
irb(main):037:0> People.find(7).all_read
People Load (1.0ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 LIMIT 1 [["id", 7]]
People Load (1.0ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 LIMIT 1 [["id", 7]]
=> []
这在本地完美运行,但在heroku上不起作用。 我在本地使用sqlite3,在heroku上使用了postgresql。
其他相关代码:
class People < ActiveRecord::Base
serialize :all_read, Array
schema.db
create_table "people", force: :cascade do |t|
...
t.string "all_read", default: "--- []\n"
end
答案 0 :(得分:0)
您应该检查数据库的版本。 还要在团队开发和生产中检查gem的版本。
在您的日志中没有看到更新查询。
答案 1 :(得分:0)
sqlite和postgres有很大的不同 开发时使用相同的数据库
例如,postgres中的varchar被指定为长度字符串,而sqlite中的varchar是不受限制的。
如果要查找确切的问题,请在update_attribute调用之后 .errors方法(与byebug或logger一起使用)以查看问题