Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails update_属性在生产环境中不起作用_Ruby On Rails_Postgresql_Heroku - Fatal编程技术网

Ruby on rails Rails update_属性在生产环境中不起作用

Ruby on rails Rails update_属性在生产环境中不起作用,ruby-on-rails,postgresql,heroku,Ruby On Rails,Postgresql,Heroku,生产日志: 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"."i

生产日志:

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
class人员
您应该检查数据库的版本。 同时在集团开发和生产中检查gem版本


我没有在您的日志中看到更新查询。

sqlite和postgres非常不同 开发时使用相同的数据库

例如,postgres中的varchar是指定长度的字符串,而sqlite中的varchar是不受限制的

如果您想找到确切的问题是什么,在您的update\u属性调用之后
使用.errors方法(使用byebug或logger)查看问题

生产日志上有什么内容?为什么进行向下投票???在没有提供建议的情况下进行向下投票是没有意义的。