ActiveRecord model

本周碰到了一个问题,需要重写model的字段的get方法,但在重写方法中,某些情况需要获取该字段原来的值(数据库中值),本来想使用alias先给方法起个别名,然后在重写方法中调用别名,结果报错,这才想ActiveRecord的方法是动态生成的,定义的时候没有该字段的get方法,询问bruce.wu,给出使用model[:attribute]可获取数据库中值的解决办法。

平时查文档感觉rails guide最方便使用,而rails guide对ActiveRecord 的attributes介绍不多,因此总结下这方面的用法备忘。

  • model.attributes获取实例的所有属性的hash形式
  • model.attributes= 传入hash设置实例的相应属性.
  • model[:attribute]获取单个属性的值,注意:这里需要symbol
  • model.attributes[attribute] 同上,但attribute为字符串
  • model.changed 返回实例是否发生变化
  • model.attribute_changed? 实例的该字段是否发生变化
  • model.new_record? 实例是否为新添加对象(非数据库中记录)
  • model.changes 返回发生变化字段的hash,形式为attribute:[原内容,现内容]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,857评论 0 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,638评论 25 709
  • Django Model 定义语法 版本:1.7主要来源:https://docs.djangoproject.c...
    罗田阅读 31,100评论 2 42
  • 人真的好奇怪,当好事发生的时候,欣然接受并且认为自己足够努力或者足够幸运才能遇上这等好事;当坏事发生的时候,就哭天...
    su小su阅读 1,544评论 0 1