如何获取具有表的列名的数组

Arw*_*wed 39 ruby orm activerecord ruby-on-rails ruby-on-rails-3

我需要一个包含表名列的数组

有关如何使用rails 3.0.0rc执行此操作的任何想法?

And*_*oni 57

假设你有一个Post模型:

Post.column_names
# or
Post.columns.map { |column| column.name }
Run Code Online (Sandbox Code Playgroud)

它将返回一个包含表'posts'列名的数组.

  • ...或者只使用`Post.column_names` (52认同)

Pat*_*ann 37

的ActiveRecord :: Base的#COLUMN_NAMES

创建一个模型:

$ rails g model Post title:string body:string
Run Code Online (Sandbox Code Playgroud)

验证app/models/post.rb

class Post < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

来自您的终端:

$ rake db:migrate
$ rails c
> Post.column_names
Run Code Online (Sandbox Code Playgroud)

应该产生:

=> ["id", "title", "body", "created_at", "updated_at"] 
Run Code Online (Sandbox Code Playgroud)

信贷@dombesz评论安德烈帕沃尼的回答"


She*_*yar 16

对于ActiveRecord:

Model.column_names
Run Code Online (Sandbox Code Playgroud)

对于Mongoid:

Model.attribute_names
Run Code Online (Sandbox Code Playgroud)

输出:

=> ["id", "title", "body", "created_at", "updated_at"] 
Run Code Online (Sandbox Code Playgroud)

注意:它将_id代替idMongoid