Rails 4"未定义的方法`访问者'"迁移后

时间:2014-09-16 20:57:09

标签: postgresql activerecord ruby-on-rails-4 hstore

我的Rails 4.1.5应用程序在Ruby 2.1上,并使用postgresql和hstore for store_accessor。从新数据库开始:

rake db:migrate; rake db:seed

......一切正常。

再次回滚和转发,这是问题开始的地方:

rake db:migrate VERSION=0; rake db:migrate; rake db:seed

如果我尝试访问任何“属性”,模型会报告“未定义的方法访问器”。

undefined method `accessor' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID::Identity:0xyaddayadda>

模型使用store_accessor和postrgesql的hstore。模型的定义如下:

class Foo < ActiveRecord::Base
  ...
  store_accessor :properties, :color, :material, :brand
  ...
end

迁移的定义如下:

class CreateFoos < ActiveRecord::Migration
  def change
    enable_extension "hstore"
    create_table :foos do |t|
      t.hstore      :properties

      t.timestamps
    end
  end
end

为了解决问题,我可以在重新创建之前彻底清除数据库:

rake db:migrate VERSION=0; rake db:drop:all; rake db:create; rake db:migrate; rake db:seed

这样做意味着每次都停止并重新启动测试和开发环境,这很麻烦。

我尝试添加另一个启用/禁用hstore的迁移:

class AddHstore < ActiveRecord::Migration
  def up
    enable_extension :hstore
  end
  def down
    disable_extension :hstore
  end
end

这在Foo迁移之前运行。

我怀疑这是posgresql ActiveRecord连接器的问题。我有可能使用这个错误,所以我想把它们反弹给你们。

0 个答案:

没有答案