gpt4 book ai didi

ruby-on-rails - Rails 中的一个 Controller 有多个数据库表

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:50 25 4
gpt4 key购买 nike

我有一个使用 Rails 的项目,我希望有多个 SQLite 表与一个 Controller 相关联。我环顾四周,没有看到任何关于此的信息。这可能吗?我现在有多个 Controller ,但我想尝试合并它们。

最佳答案

Ruby on Rails 使用 MVC 范式。这意味着,非常简单的解释,模型 (M) 负责数据存储和检索, View (V) 用于显示, Controller (C) 接收和发送请求。

一个简单的例子:用户发送显示页面的请求。 Controller 接受这个请求。如果有来自数据库的数据需要显示在页面上, Controller 会询问相关的模型。该模型从数据库中获取这些数据,将其发送到 Controller ,然后再将其发送到 View 。

如果在您的示例中,数据存储在不同的数据库表中,则 Controller 负责询问它们的相关模型。

例如,您有一个名为 projects 的数据库表,另一个名为 tasks,第三个名为 users,那么您必须有三个模型:Project 模型、Task 模型和 User 模型。每个模型负责其数据库表。

也许您有一个 View (它将生成一个 html 页面),您希望在其中显示来自所有三个表的数据。我们称它为 show.html。

按照 Rails 约定,您在 Controller 中有一个相应的操作“显示”。你必须告诉这个 Action , View 需要什么样的数据。

class YourAwesomeController < ApplicationController

def show
@project = Project.find(1)
@task = Task.find(21)
@user = User.find(42)
end
... # some other actions

end

这意味着,您在 Controller “YourAwesomeController”中的“显示”操作要求模型项目从“项目”表中获取 id = 1 的行,然后 Taks 模型从“任务”中获取行' id = 21 的表,最后它希望用户模型从表 'users' 中获取 id = 42 的行。

注意: Controller 不知道需要的数据存储在哪里。他只知道(通过你的代码)模型(可以想象用户的数据存储在外部网络服务中。如果是这样,模型知道这一点并且 Controller 不介意,因为他只是要求模型向他发送他需要的数据)

在您的“show.html.erb”中,您现在可以使用实例变量@project、@task 和@user 来显示数据。

如果您遵循惯例,Ruby on Rails 会展现出它的全部力量和魔力。但是,即使您不使用 Rails,也始终建议您遵循 MVC 范例。

关于ruby-on-rails - Rails 中的一个 Controller 有多个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com