Rails中重写Active Record字段属性

 系统重构或升级时偶尔会碰到需要重写某个字段的情况,例如:

1. 读取user的name字段时,实际返回name_new字段

class User <  ActiveRecord::Base
 def name
    attribute(:name_new)
  end
end

2. 修改属性时做一些其他操作(这种场景也可以使用回调来实现)

class User < ActiveRecord::Base
  def name=(value)
    # actions
    write_attribute(:name,value)
  end

  def name
    read_attribute(:name)
  end
end

原文地址:https://www.cnblogs.com/xiaoff/p/9052270.html

时间: 2024-10-09 14:38:12

Rails中重写Active Record字段属性的相关文章

架构模式中的Active Record和Data Mapper

架构模式中的Active Record和Data Mapper 概念 在简单应用中,领域模型是一种和数据库结构一致的简单结构,对应每个数据库表都有一个领域类,在这种情况下,有必要让每个对象负责数据库的存取过程,这也就是Active Record(活动记录). 领域对象直接鱼数据库表进行交互,这带来了一个问题,随着领域逻辑变的更加复杂,它就慢慢转变成一个大的领域模型,简单的Active Record已经不能满足要求了. 领域类和表一对一匹配也开始随着把领域逻辑放入更小的类而失效.关系数据库无法处理

Access中的数据类型和字段属性

数据类型 用途 文本 字符.数字或字符与数字的任意组合,不能用于计算.最长255个字符,默认长度为50个字符.对于指定的大小,存放中文汉字与英文字母的个数都是一样的 备注 超长的文本,用于注释或说明,最长65535个字符 数字 用于计算的值,1.2.4或8字节 日期/时间 表示日期和时间,可用于计算,最多8字节 货币 表示货币的数据类型,可用于计算,小数点左边最多为15位,右边可精确到4位,最多8字节 自动编号 Access为每条记录提供唯一值的数值类型,常用做主码,4字节 是/否 布尔型,1字

yii中使用active record进行关联显示

model中: view中:

yii2中使用Active Record模式

1. 在db.php中配置相应的数据库信息: return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ]; 2. 使用gii模块来自动生成相应的代码(访问链接http://localhost/basic/web/index.php?

ruby rails 重写activerecord::Base 的字段属性

在ruby rails中如果你想要保存一个属性(或读取一个属性),同时希望在保存属性(或读取一个属性)时做一些其他的操作 可以使用重写该属性的设置器或读取器的方法. 比如一个Models的表中有一个叫name的字段,希望对name进行操作 方法一. class Model < ActiveRecord::Base attr_accessible :name def name=(value) # actions write_attribute(:name,value) end def name r

C#中的类:字段、属性、方法

C++的类中可以有三种内容:成员变量.成员函数和友元. 一般来说,成员变量描述类的属性,成员函数描述类的操作,友元则是一种特殊的声明,被声明为友元的函数或类可以操作自己的私有成员变量和成员方法. 在Java中,类的成员有两类:属性,相当于C++的成员变量:方法,相当于C++的成员函数. 而在C#中,类的成员有四种:字段.属性.方法和事件(事件还没学到,暂缓解释). 字段相当于C++中的成员变量和Java中的属性,就是在类中定义的变量(可以是基本类型或引用类型),一般来说,字段都被定义为私有. 方

如何将Sql server数据库中的模型图转化到Word中--并能够查看字段的属性信息

1. 在Sql server数据库中创建数据库的模型图 -- Database Diagrams 2. 控制面板--管理工具--ODBC数据源链接--创建一个Sql server的数据源链接 3. 打开Visio工具,打开数据库模型--Database--Reverse Engineer[反向工程] 选择要导入到Visio中的表: 4. 将DB的表结构导入到Visio中,界面可能需要略微调整一下 可以在Visio中查看字段的详细信息 将Visio保存成一个文件. 5.打开Word,插入对象 将V

SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型

SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型? 这个就有点恼了,作为新手面对这些问题真有点难,这个也是我在百度上查到的,作为基础的整理吧,以后遇到方便查看. 用SQL语句:alter table [aa] alter column bb int eg: 这个是我的例子. 执行成功可以刷新一下数据库(如还是不可以,那就断开现有连接,再次连接就好.)

SqlServer查询出数据库中所有的表及其字段属性

代码如下所示: /********************************* SqlServer查询出数据库中所有的表及其字段属性 *********************************/ SELECT ( CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ) AS 表名 ,--如果表名相同就返回空 a.colorder AS 字段序号 , a.name AS 字段名 , ( CASE WHEN COLUMNPROPERTY(a