Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 3 Rails3控制台和db:console是不同的_Ruby On Rails 3_Sqlite_Activerecord - Fatal编程技术网

Ruby on rails 3 Rails3控制台和db:console是不同的

Ruby on rails 3 Rails3控制台和db:console是不同的,ruby-on-rails-3,sqlite,activerecord,Ruby On Rails 3,Sqlite,Activerecord,我有一个rails应用程序,当我打开console和db:console时,它们对应该是同一字段的内容有不同的值。我正在使用send函数更改值。以下是模型中的方法: def toggle_approve(field) self.send(field) if(self.send(field).blank?) self.send(field + '=', "new_value") puts self.send(field) else

我有一个rails应用程序,当我打开console和db:console时,它们对应该是同一字段的内容有不同的值。我正在使用send函数更改值。以下是模型中的方法:

  def toggle_approve(field)
    self.send(field)
    if(self.send(field).blank?)
        self.send(field + '=', "new_value")
        puts self.send(field)
    else
        self.send(req + '=', "")
    end
    rank.save
  end

在我的db:console(sqllite)中,一切都是正确的,但在我的常规erb控制台中它是错误的。然后,我的视图将显示erb控制台中的内容,而不是sqllite。我不明白背景中发生了什么会导致这个问题。任何帮助都会很好

从您提供的详细信息很难确定,但我认为您的视图使用了过时的数据版本。尝试在更新后的记录上调用
.reload
,就在更新之后和演示之前。看看这是否能解决您的问题。

无法清楚地理解。但是,请尝试删除表中现有的数据,然后重试。有时候,它会给出不同的值。你是对的,但是视图如何能够基于这样的移动目标呢?我们如何针对它进行调试?有没有办法使视图基于备份数据库而不是控制台中的内容,或者有没有办法在每次调用后重新加载数据?这就是MVC和绑定模式之间的区别。数据由控制器检索,它是需要更新视图的数据。您最好的选择可能是重新设计它,以便获得相同的功能,但不需要重新加载。如果您无能为力,则确定需要重新加载的情况,并在helpers或模型本身中自动执行该行为。是否有文档显示数据何时更新以及如何更新?我会重构它,但我想以最好的方式来做这件事?在prod应用程序中,它的工作方式是否与在dev中相同?或者,我这里的功能在prod中是否也可以使用?数据永远不会自动更新。但是,您可以创建一个静态方法来在类中注册一个实例,然后创建另一个静态方法来重新加载所有注册的实例。然后,您可以注册有问题的实例,并在控制台中调用您自己实现的
reload\u实例
static方法,或者在您希望的任何地方。此外,我认为我可以只更新UI,让Ajax请求飞起来,而不必担心它。后端正在工作,但UI正在缓存或其他东西。或者我可以使用
uncached do。。。结束
,这也可能有效。你怎么认为?