Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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 Can';t设置ActiveRecord属性-固定为Fixnum_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails Can';t设置ActiveRecord属性-固定为Fixnum

Ruby on rails Can';t设置ActiveRecord属性-固定为Fixnum,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我将记录的时间戳属性(datetimetype)设置为0。我保存了它(或者没有保存)。我再次尝试将其设置为0 a = MyModel.last # => #<MyModel id:... a.updated_at # => Tue, 12 Mar 2013 01:36:17 UTC +00:00 a.updated_at = 0 # => 0 a.updated_at = 0 即使在重新启动rails并从数据库(本地sqlite3)重新加载记录之后,也会发生这种

我将记录的时间戳属性(
datetime
type)设置为
0
。我保存了它(或者没有保存)。我再次尝试将其设置为
0

a = MyModel.last # => #<MyModel id:...
a.updated_at     # => Tue, 12 Mar 2013 01:36:17 UTC +00:00
a.updated_at = 0 # => 0
a.updated_at = 0
即使在重新启动rails并从数据库(本地sqlite3)重新加载记录之后,也会发生这种情况。救命啊

编辑:rails控制台堆栈跟踪比我从服务器获得的跟踪更具启发性:

NoMethodError: undefined method `change' for 0:Fixnum
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:69:in `round_usec'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:46:in `fields_updasqliteted_at='
       from (irb):23
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
       from script/rails:8:in `require'
       from script/rails:8:in `<main>'
NoMethodError:0:Fixnum的未定义方法“change”
from/Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active\u record/attribute\u methods/time\u zone\u conversion.rb:69:in'round\u usec'
from/Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active\u record/attribute\u methods/times\u zone\u conversion.rb:46:in`fields\u updasqlited\u at='font
来自(irb):23
来自/Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:47:在“开始”中
来自/Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:8:在“开始”中
来自/Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands.rb:41:in`'
来自脚本/rails:8:in'require'
来自脚本/rails:8:in`'

由于魔术列的类型为datetime,因此不能为其分配整数。如果需要,可以使用以下链接:

您可以使用绕过Rails回调和验证


对于这种特定情况,使用update_列将绕过时区和RoR使用的其他方法回调,这些回调将失败,因为它不需要FixNum。

什么是
更改
?这是
MyModel
上的一个属性吗?它不是ActiveRecord调用来更改记录值的东西…?:)除了迁移方法,我不知道。只是检查了一下,其他模型也会发生这种情况…可能重复::)一旦我给它分配了一个整数(错误),但是,如果它不可设置??如果你给它分配了一个整数,它将引发上述错误(你发布的那个)。您可以指定一个nil值而不是0。是的,但是如果我将其设置为整数,那么我就永远无法将其更改回原来的值?您可以从我在答案中发布的链接中获得帮助。似乎我可以使用
update\u column
绕过rails的时区魔法,并成功地将其从Fixnummery中解救出来。。谢谢@Gabriel Cebrian
NoMethodError: undefined method `change' for 0:Fixnum
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:69:in `round_usec'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:46:in `fields_updasqliteted_at='
       from (irb):23
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
       from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
       from script/rails:8:in `require'
       from script/rails:8:in `<main>'