微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 什么是Ruby on Rails ORM以外行人的术语?请解释

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本身.大多数人喜欢这个功能.

这些只是一些例子.活动记录提供了更多的功能,如翻译,查询范围或支持单表继承.

最后但并非最不重要的是,您可以将自己的方法添加到这些类中.

模型是一种不会写“spaguetti代码”的好方法,因为你被迫按功能分离你的代码.

>模型处理数据库交互和业务逻辑视图处理html渲染和用户交互>控制器将模型与视图相连接

原文地址:https://www.jb51.cc/ruby/266082.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐