Rails,模型和数据库一样吗?
Rails, are the model and database the same?
谁能给我解释一下模型和数据库的区别?数据库已创建并代表模型。谁能详细说一下,不胜感激
数据库是您存储数据的 table 的集合。
模型是 Ruby class,代表代码中的 table。这就是您实现与 table 及其关系交互的代码的地方。
数据库是实际存储数据的地方。该模型控制着应用程序其余部分与该数据的交互。目标是将数据存储方式和使用方式的细节分开。
例如,在没有模型的情况下,如果应用程序代码想要获取当前用户的姓名,它可能会直接查询:select name from user where id = ?
。对于模型,应用程序代码会询问用户模型。 user = User.find(1); user.name
。使用模型,可以在不破坏使用它的代码的情况下更改用户存储方式的细节。例如,如果您更改 SQL 数据库,该模型将保护您免受 SQL 方言的更改。
在Rails中模型一般都是用ActiveRecord写的。这仍然泄露了很多关于模型存储方式的信息:每个 table 一个 class,每行一个对象,方法调用如 where
引用 table 的具体细节, 你仍然可以写原始 SQL。 Repository Pattern 有助于进一步区分数据的存储方式和使用方式。
即使用户存储在数据库中,设计良好的用户模型也会隐藏,也许它存储在云中并且用户正在进行 API 调用。
另见...
- MVC and You 在 Rails 指南中
- What is ActiveRecord? 在 Rails 指南中。
- Model-View-Controller 维基百科
- How to Use Ruby on Rails Repositories and Active Record Model
谁能给我解释一下模型和数据库的区别?数据库已创建并代表模型。谁能详细说一下,不胜感激
数据库是您存储数据的 table 的集合。
模型是 Ruby class,代表代码中的 table。这就是您实现与 table 及其关系交互的代码的地方。
数据库是实际存储数据的地方。该模型控制着应用程序其余部分与该数据的交互。目标是将数据存储方式和使用方式的细节分开。
例如,在没有模型的情况下,如果应用程序代码想要获取当前用户的姓名,它可能会直接查询:select name from user where id = ?
。对于模型,应用程序代码会询问用户模型。 user = User.find(1); user.name
。使用模型,可以在不破坏使用它的代码的情况下更改用户存储方式的细节。例如,如果您更改 SQL 数据库,该模型将保护您免受 SQL 方言的更改。
在Rails中模型一般都是用ActiveRecord写的。这仍然泄露了很多关于模型存储方式的信息:每个 table 一个 class,每行一个对象,方法调用如 where
引用 table 的具体细节, 你仍然可以写原始 SQL。 Repository Pattern 有助于进一步区分数据的存储方式和使用方式。
即使用户存储在数据库中,设计良好的用户模型也会隐藏,也许它存储在云中并且用户正在进行 API 调用。
另见...
- MVC and You 在 Rails 指南中
- What is ActiveRecord? 在 Rails 指南中。
- Model-View-Controller 维基百科
- How to Use Ruby on Rails Repositories and Active Record Model