1
6
这是它的工作原理
访问器如下所示:
对于读取属性和写入属性方法,有一个快捷方式:# [] 和γ []= . 如果出于某种原因,您需要直接访问基础数据(例如,进行一些数据转换),您可以将其写短:
模型有一个特殊的访问器--# attributes --它返回“column\u name=>value”哈希。 注意:每列的数据存储在模型实例内的一个特殊哈希实例中,而不是“@column\u name”实例变量中。当您使用attr_访问器定义访问器时,您会阻止通过方法来定义属性访问器的常规方法。您的数据存储在实例变量中,而不是“ 属性 “散列,因此不会保存到数据库中。 如果要向模型中添加新属性,实际上需要向对应于该模型的数据库表中添加列,然后重新加载整个应用程序。 |
2
1
数据库字段和临时attr_访问器声明的属性之间有一个重要的区别。如果已经声明了列,则不需要attr访问器声明。 请记住,数据应该存储在模型的属性属性中,以便正确保存,而不是作为单个实例变量。 例如,要查看计划保存的内容:
有一些方法可以获取有关模型中可用列的信息,例如:
|
3
0
attr_访问器将永远不会保存到数据库中。这些是实例中的内部变量。如果要保存值,必须创建实列。 进行迁移以声明列,然后重试。 |
JBlake · 唯一验证基于datetime属性的存在,而不是值? 6 年前 |
Serge · Yii-查找具有零相关记录的记录 6 年前 |
waynard · Rails 5左外连接与WHERE查询相结合 6 年前 |
OKMantis · Ruby on Rails中的交叉引用表 6 年前 |
Grey · 访问不同子控制器中的不同关系 6 年前 |