在
Ruby on Rails中我无法理解ORM.从我所理解的,表/列和对象/属性之间有1:1的关系.所以每个记录都是一个对象.
还有什么是模型?我知道它映射到一个表.
还有什么是模型?我知道它映射到一个表.
我真正追求的是对上述的更深入的理解.预先感谢您的帮助
我是从PHP到Ruby on Rails的Web开发人员.
解决方法
“从我所知,表/列和对象/属性之间有1:1的关系,所以每个记录都是一个对象.
这不完全正确,除非你非常宽松地使用术语“物体”.表由类建模,而表记录由这些类的实例建模.
假设您有一个客户端表,其中包含列id(autonum)和名称(varchar).假设它只有一条记录,id = 1,名字=“Ford”.然后:
> DB表客户端将映射到模型类Client.
>记录将映射到模型实例,这意味着您必须创建对象并将其分配给变量才能使用记录.最常见的方法是做ford = Client.find(1)
>表的两列将映射到ford变量的方法.你可以做ford.id,你会得到1.你可以做ford.name,你会得到字符串“福特”.您还可以通过执行ford.name =“Chevrolet”来更改客户端的名称,然后通过执行ford.save将更改提交到数据库.
“还有什么是一个模型?我知道它映射到一个表”
模型只是具有很多非常有用的操作数据库方法的类.这里有些例子:
>验证:除了典型的数据库驱动的验证(“此字段不能为空”),您可以在ruby中实现复杂的验证(“该字段必须是有效的电子邮件”是最典型的).验证在您在模型实例上调用“保存”之前运行.
>关系:外键也可以映射到模型上.例如,如果您有通过外部钥匙与您的ford客户端相关联的品牌表(与其相应的品牌型号),则可以使用ford.brands,您将获得一系列表示品牌表上所有记录的对象,一个client_id = 1.
>查询:模型允许您使用ruby创建查询,并将其转换为sql本身.大多数人喜欢这个功能.
这些只是一些例子.活动记录提供了更多的功能,如翻译,查询范围或支持单表继承.