首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Rails中发现模型属性?

如何在Rails中发现模型属性?
EN

Stack Overflow用户
提问于 2009-08-17 18:21:39
回答 5查看 116.2K关注 0票数 163

我发现很难很容易地看到我的所有模型类上都存在哪些属性/属性,因为它们没有在我的类文件中显式定义。

为了发现模型属性,我让schema.rb文件保持打开状态,并根据需要在它和我正在编写的任何代码之间切换。这是可行的,但很笨拙,因为我必须在读取模式文件以获取属性、模型类文件以检查方法以及我正在编写的用于调用属性和方法的任何新代码之间进行切换。

我的问题是,当您第一次分析Rails代码库时,如何发现模型属性?您是一直打开schema.rb文件,还是有一种更好的方法不需要经常在模式文件和模型文件之间跳转?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-18 01:48:09

有关Schema的内容

Model.column_names         
Model.columns_hash         
Model.columns 

例如AR对象中的实例变量/属性

object.attribute_names                    
object.attribute_present?          
object.attributes

例如,没有从超类继承的方法

Model.instance_methods(false)
票数 302
EN

Stack Overflow用户

发布于 2009-08-17 18:24:41

有一个叫做Annotate models的rails插件,它将在你的模型文件的顶部生成你的模型属性,这里是链接:

https://github.com/ctran/annotate_models

为了使注解保持同步,您可以编写一个任务来在每次部署后重新生成注解模型。

票数 29
EN

Stack Overflow用户

发布于 2013-07-13 19:11:05

如果您只对数据库中的属性和数据类型感兴趣,那么可以使用Model.inspect

irb(main):001:0> User.inspect
=> "User(id: integer, email: string, encrypted_password: string,
 reset_password_token: string, reset_password_sent_at: datetime,
 remember_created_at: datetime, sign_in_count: integer,
 current_sign_in_at: datetime, last_sign_in_at: datetime,
 current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime,
 updated_at: datetime)"

或者,在为您的开发环境运行rake db:createrake db:migrate之后,文件db/schema.rb将包含您的数据库结构的权威来源:

ActiveRecord::Schema.define(version: 20130712162401) do
  create_table "users", force: true do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
end
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1289557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档