上个学期我在编程课程中教过 Ruby ,一些关于实体关系图,以及一些 Dataflow 。 我最近一直在进入 Ruby on Rails ,我想利用我积累的一些新手知识来开发一个基于简单想法的网站。 但是,我似乎无法找到 Ruby on Rails 与我上一学期的知识之间的粘合剂。在某些特定领域,我陷入困境并不断混淆:
如何将我的图表中的实体转换为Rails思维? 什么是命名约定甚至是翻译 - 是 Controller 的实体?还是模型?
让我们想象一下,我有以下愿望:
网络应用程序是一个在线列表,显示从网站用户窃取的汽车。 用户(实体?)应该能够注册用户信息(属性?),填写一个表格,创建一个具有唯一性的CarPost(实体?) id和reg。在他自己的帖子概述CarPostView( View ?)中可以私下查看的号码。
如果他/她的汽车被盗了! (敲木头),用户应该能够激活(动作?),以显示 CarPost 在网站的首页被盗,可供所有访问者搜索和阅读。如果汽车返回用户,用户应该能够停用 CarPost 并让其他人再次看不到它,但保留它在他的帖子概述页面。
在我脑海中,:
然后我需要创建一些'动作?'某个地方可以激活/停用 CarPosts ,并在它们之间建立一些关系。我认为关系在Rails中被称为 association ,请更正我 - 请 - 如果我错了?那些应该在我的 Models ?
中任何指导意见。
答案 0 :(得分:1)
来自Wikipedia:
在软件工程中,实体关系模型(ER模型)是用于以抽象方式描述数据库的数据模型。
你的问题:
什么是命名约定甚至翻译 - 是控制器的实体?模型?
Rails *中的Model层(以及所有其他* M * VC框架)*是您和数据库之间的抽象层。每个模型通常都是“实体”,部分关系由模型上的关联/关系描述。
根据您的说明,User
和CarPost
将作为模型存在(尽管我倾向于重命名CarPost
Car
之类的内容。对于每个模型,您将在数据库中同时拥有users
和cars
表。
在许多情况下,图表中的“操作”将通过Rails控制器中的操作进行处理。这是MV * C *中的 C - 业务逻辑所在的层。一个很好的例子是在您的应用程序中“激活”Car
的列表。这可能会采用CarsController
的{{1}}行动。
“视图”只是HTML模板,它们是M * V * C中的 V 。这是用户看到并将与之交互的内容,以便告诉Rails他们想要做什么。再次按照您的示例,您可能会有一个视图来显示用户的汽车(通常是activate
上的show
操作)并且在同一个视图/模板上有一个链接CarsController
中的activate
操作。
对于你关于ER模型的问题,这是一个过于简化的MVC解释。如果你有兴趣深入潜水,我建议谷歌搜索MVC - 互联网上充斥着有关它的信息。
你在评论中提到你已经完成了很多Hartl教程。我自己从来没有读过它,但是知道它对于刚开始使用Rails的人来说非常受欢迎。我觉得有点难以相信你已经完成了教程中的大部分工作,并且无法连接你的ER模型和各种Rails框架之间的点。这不是批评,而只是指出你应该从教程中获得比你似乎更多的东西 - 另一个可能是明智的。
初学者的另一个优秀资源是官方 Rails Guides 。