![]() |
1
0
如果您的应用程序需要知道某个用户在每次页面加载时是否有一些调用等待,并且该信息只保存在数据库中,那么是的,我希望您在每次页面加载时都必须查询数据库中的该信息。 就干燥而言,Rails在整个MVC堆栈中提供了许多机制,以确保保持干燥和可维护性: 在模型中,可以向调用模型中添加一个类方法,以封装查询等待调用的逻辑。可能是这样的:
通过将查询封装在这样的方法中,可以确保如果查询该信息的基础逻辑发生更改,则不会调用该方法。 您可以在控制器/操作集上运行此代码,而不是将此方法调用添加到每个控制器操作(索引、显示等),而是使用控制器的“筛选前/筛选后/筛选后”方法。
使用before_filter选项,如:except和:仅用于精确定位在特定控制器操作中使用的筛选器。此外,在applicationcontroller中声明实际的load_current用户调用方法时,确保每个子类控制器都有该方法,而不必在applicationcontroller中放置before_filter声明——您可以将它放在任何要运行before_筛选器的控制器中。 在视图层中,您可以进行部分操作,以便在标准布局中轻松显示@calls。您可以在布局中添加类似的内容:
或者,如果这不适合您的布局,您可以从任何适用的视图调用它。 |
![]() |
2
0
我觉得这个模型有点混乱。就是那个 用户标识 和 用户2ID 特别是,这让我有种不安的感觉——它告诉我,你并不真正关心谁在等谁,这两个用户之间没有区别,而且你很乐意在每次查找用户时都用“或”来检查两个列。这对Rails和SQL来说都是一团糟。 这也不是你描述的商业问题。这两个用户之间的关系是 不 完全对称:一个人在等另一个人。很明显,你在乎的是哪一个,但你并没有为它建模。或者,如果你是的话,你给他们起的名字很差。 我对您的申请没有确切的了解,但我可能会做两件事来清理:
在我看来你好像在想 数据优先 并尝试使您的代码适合您所拥有的表结构。这不是铁路的最佳选择。想想你的 行为 首先,让您的数据模型适应您希望用户能够做的事情。 |
![]() |
cluster1 · 采取独立的新行动的好处是什么? 7 月前 |
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 8 月前 |
![]() |
Fred Willmore · Rails控制器不呈现任何模板 1 年前 |
![]() |
Diogo Amaral · 实现API请求的正确方式 1 年前 |
![]() |
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
![]() |
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
Flávio · 基于另外两个生成数组 1 年前 |