GMs*_*soF 1 ruby ruby-on-rails rails-activerecord
我开始学习Ruby和Rails,有时候"会议过度配置"会让我感到害怕......
好的,我User通过Rails命令在Rails中创建了一个模型.User用一些属性创建的模型,比如name和age.
但当我打开user.rb:
class User < ApplicationRecord
end
Run Code Online (Sandbox Code Playgroud)
它只有这些.我找不到了attr_accessor.所以我继续搜索,我发现属性名称和方法保存在某个地方,所以基本上我仍然可以像往常一样创建对象并引用属性user.name和user.age.
我的问题是,Rails中的属性保存在哪里?这是怎么回事?我不认为属性也保存在超类中ApplicationRecord,我打开了application_record.rb:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Run Code Online (Sandbox Code Playgroud)
那些属性保存在哪里?以及Ruby如何解析这个属性?我想知道背后的机制.
ActiveRecord不会修改您的代码,也不会改变实现方式.相反,它是Ruby中常见的模式,是动态定义方法.这通常被称为"元编程",因为您的代码有效地编写代码.请注意,它不是字面上编写代码,只有当程序在内存中加载它才能转换自身.
通常通过运行SQL命令来自动发现列,SHOW FIELDS以确定结构和类型.然后相应地生成这些方法.
如果你想知道这个机制,你可以随时阅读ActiveRecord源代码,但要记住它做了很多事情,有时可能有点难以导航.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |