1

在 Rails 中,我会简单地使用:

MyModel.column_names

访问表的列名,但我正在忍受我对 Sinatra 的第一次摸索(为了更好地学习 Ruby)并且需要将表的列名放入数组中。

以前,我已经迭代了 params 哈希以提取键值对:

params.each do |key, value|
  #manipulate keys and values
end

并知道使用:

@mm = MyModel.new
@mm.each do ....

导致未定义的方法“每个”错误。

logger.info @mm.inspect

记录类似:

#<MyModel @id=nil @start=nil @end=nil @yada=nil @created_at=nil @updated_at=nil @foreign_id=nil>

那么,如何将那些我可以清楚地看到的爆炸列名放入数组中?

谢谢...

更新

感谢 Doon 用 Datamapper 属性为我指明了正确的方向。

我最终制作了一个私有方法 column_names:

def self.column_names
  self.properties.collect {|column| column.name.to_s }
end

这是一种享受

4

2 回答 2

2

你在找properties吗?

http://rubydoc.info/gems/dm-core/1.1.0/DataMapper/Model/Property

于 2013-02-13T18:52:26.887 回答
0

对于任何 Ruby 对象,您都有instance_variables返回该对象属性数组的方法。这对你来说太笼统了吗?我不熟悉 DataMapper,可能有一个特定的方法可以column_names在 ActiveRecord 中进行等效操作。

于 2013-02-13T18:46:20.253 回答