切换数据库子集的会话变量

问题描述 投票:0回答:1

我对 Rails 还比较陌生,所以希望我的措辞正确。

我有一个珊瑚物种数据数据库。有 1000 多种珊瑚,属于两大类珊瑚:六珊瑚和八珊瑚(在物种数据表中编码)。当人们使用数据库时,他们可能想要处理 (1) 所有物种,(2) 仅六珊瑚物种,或 (3) 仅八珊瑚物种。

我尝试使用通过 URL 传递的 params 变量对数据进行子集化(

?group=Hexacorals
params[:group]
)。但我不禁想到有一种更有效的方法可以使用应用程序或会话变量来执行此操作。理想情况下,我希望标题中有一个切换/单选按钮,以便人们在这些数据库状态之间自由切换。

非常感谢任何帮助。

ruby-on-rails postgresql
1个回答
0
投票

但我不禁想到有一种更有效的方法可以使用应用程序或会话变量来完成此操作。

其实不然。

如果您想维护 幂等性的想法(即无论谁访问该页面,相同的 URI 应该看起来相同),您所做的实际上是“正确”的方式。这是 REST 中非常核心的租户。

如果您将此过滤移至会话中,则会产生很多负面影响:

  • 用户不能仅共享 URI 并获得相同的结果。
  • 会话依赖于 cookie。如果用户拒绝 cookie,您的网站现在就崩溃了?
  • 您不能仅将 URI 与 E-Tags 一起使用,这是缓存并向不同访问者提供相同响应的非常有效的方式。

在某些有效的用例中,您确实希望在会话中存储用户特定的设置或状态,而不是作为 HTTP 参数。但这并不是一种更有效的方法,您需要克服缺点。

如果你想进行某种切换,仍然可以使用 JavaScript 来实现。

© www.soinside.com 2019 - 2024. All rights reserved.