ActiveRecord属性为nil但数据库有值

时间:2015-06-29 20:33:22

标签: ruby-on-rails ruby activerecord sqlite

解决 Rails和SQLite之间存在日期时间格式问题。删除config / application.rb中的时区条目后,此问题已清除。

我正在使用Ruby on Rails,Rails相当新。每当我查询对象时,ruby对象上的created_at和updated_at字段都是nil。

当我使用sqlitebrowser检查后端时,我可以看到该字段有一个值。我正在使用 rails console 来解决这个问题。

jwilliam@ubuntu:~/rails/devminder$ rails console
Loading development environment (Rails 4.1.8)
2.2.2 :001 > Instance.all
  Instance Load (1.1ms) SELECT "instances".* FROM "instances"
 => #<ActiveRecord::Relation [#<Instance id: 1, title: "test" ec2id: "", created_at: nil, updated_at: nil, can_ice: 0>]>
2.2.2 :002 > SQLite3::Database.new('db/development.sqlite3').execute("select instances.* from instances")
 => [[1,"test", "", "2015-06-29 15:35:10.012611", "2015-06-29 15:35:10.012611", 0]]

当我执行 Instance.all 时,我看到我为created_at和updated_at获取nil,但是直接执行查询到SQLite3会显示有值,并且它们没有将它们映射到ActiveRecord属性正常。

我有一个使用SQLite3后端的Rails项目。我确信我已经做了一些事情来阻止这个应用程序,但我想弄明白。

文件 app / models / instance.rb

class Instance < ActiveRecord::Base
end

文件 app / models / schedule.rb

class Schedule < ActiveRecord::Base
   #table schedules has an instance_id field... 
   belongs_to :instance
end

迁移 db / migrations / 20141216152255_create_instances.rb

class CreateInstances < ActiveRecord::Migration
  def change
    create_table :instances do |t|
      t.string :title
      t.string :ec2id

      t.timestamps
    end
  end
end

文件 db / migrations / 20141230203652_instance_changes.rb

class InstanceChanges < ActiveRecord::Migration
  def change
    add_column :instances, :can_ice, :boolean
  end
end

0 个答案:

没有答案