Ruby on rails 3.1 Datamapper升级在rails 3.1第二存储库中失败
我试图在Rails 3.1应用程序中使用Datamapper,但在映射第二个存储库中存在的模型时遇到了问题 我有以下课程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
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
工作