Ruby on rails 3.1 Datamapper升级在rails 3.1第二存储库中失败

Ruby on rails 3.1 Datamapper升级在rails 3.1第二存储库中失败,ruby-on-rails-3.1,ruby-datamapper,Ruby On Rails 3.1,Ruby Datamapper,我试图在Rails 3.1应用程序中使用Datamapper,但在映射第二个存储库中存在的模型时遇到了问题 我有以下课程 class Arp include DataMapper::Resource storage_names[:passive] = "arp" property :id, Serial, :field => "id" property :ip_address, String, :field => "ipaddr" def self.defa

我试图在Rails 3.1应用程序中使用Datamapper,但在映射第二个存储库中存在的模型时遇到了问题

我有以下课程

class Arp
  include DataMapper::Resource

  storage_names[:passive] = "arp"

  property :id, Serial, :field => "id"
  property :ip_address, String, :field => "ipaddr"

  def self.default_repository_name
    :passive
  end
end
还有一些字段,但为了简单起见,我将它们注释掉,得到了相同的错误。以下是我运行rake db:migrate时得到的结果:

Arp必须至少有一个属性或多对一关系才能有效

不确定发生了什么,因为我清楚地定义了一个属性

这是mysql的表结构

+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| ipaddr | varchar(15) | NO   |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
为了清晰起见,再次删除了一些字段

我在rails中的database.yml文件中有多个存储库,我根据dm rails github页面上的指南进行了设置

这是该文件的缩短版本

passive_defaults: &passive_defaults
  adapter: mysql
  username: <USERNAME GOES HERE>
  password: <PASSWORD GOES HERE>
  host: localhost
  database: passive

development:
  database: portal
  <<: *portal_defaults
  repositories: 
    passive: 
      <<: *passive_defaults
被动默认值:&被动默认值
适配器:mysql
用户名:
密码:
主机:本地主机
数据库:被动
发展:
数据库:门户

我在提出这个问题后不久就解决了这个问题

self.default_repository_name覆盖的顺序很重要。所以

class Arp
  include DataMapper::Resource

  def self.default_repository_name
    :passive
  end    
  storage_names[:passive] = "arp"

  property :id, Serial, :field => "id"
  property :ip_address, String, :field => "ipaddr"    
end
工作