在ActiveRecord中,我有:
class Patient < ActiveRecord::Base
end
在DataMapper中我有:
class Patient
include DataMapper::Resource
property :id, Serial
property :name, String
has n, :orders
# ... a lot of properties and associations more
end
如何在DataMapper中自动获取列名?
答案 0 :(得分:1)
你没有。 Datamapper的一个主要功能是在模型中定义映射,这就是为什么Datamapper在使用旧模式时是一个很好的选择,因此您可以使用rails列命名约定而无需更改整个数据库模式。
property :deleted, Boolean, field: 'isdeleted'
查看文档以获取更多信息,但简而言之,这是datamapper的一项功能,而不是限制。我有点像在模型中明确定义表属性。
答案 1 :(得分:1)
这个问题似乎有点旧,但有一个名为'dm-is-reflective'的宝石。它基本上为您完成了大部分映射。如果您正在使用时间戳,那么您需要使用以下内容映射DateTime列。 property :created_at, DateTime, :field => 'create_date'
只需安装gem,在require 'dm-is-reflective'
的模型中使用它,然后在每个类中,您可以执行以下操作:
class Comment
include DataMapper::Resource
is :reflective
# manually mapping a timestamps field
property :created_at, DateTime, :field => 'create_date'
reflect /.*/ # This is just one way to do this.
end
还有其他几种方法可以设置您的模型,但这种方式对我来说很合适。
了解更多信息...... https://github.com/godfat/dm-is-reflective