这种非常规方法对我的RoR应用程序的性能有多大影响?

时间:2016-04-12 16:19:39

标签: ruby-on-rails ruby ruby-on-rails-4

此问题纯粹是概念性的,不包含任何代码。

我正在使用单个用户模型构建应用。我想让用户可以自由选择3种不同的网站风格。这些样式将影响UX的其他组件,包括消息模型和消息控制器。

我认为最好的解决方法是给每个用户一个"样式"列,并根据它们选择的网站样式,将值作为字符串或整数保存到users表中。

我已经编造了一种方法,可以为所有三种不同类型的用户使用相同的Message模型和消息控制器,以及消息控制器内的相同操作。在我的消息控制器的每个动作中,我基本上都会先查询哪种"样式"当前用户在其对应的数据库行中具有的属性。基于三种可能的"样式",我可以使用if-else或switch语句在控制器动作内部完成正确的事情,具体取决于当前用户的风格,包括渲染一个"样式"特定的模板,而不是默认的视图模板。

有没有更好的方法来实现这一目标?这完全是灰心丧气吗?我最好只创建3个不同的消息控制器,那会更传统的RoR并且对应用程序的性能损害更小吗?

如果我通过我的消息控制器甚至可能还有两个控制器的操作来遵循这种方法,那对我的应用程序的性能有多么灾难性?

提前感谢任何人都可以给我的见解:)

1 个答案:

答案 0 :(得分:1)

我做过非常相似的事情,对性能影响很小甚至没有。只要更改纯粹是HTML / CSS / JavaScript,就可以通过Rails Asset Pipeline的工作知识和数据库中的单个列轻松完成。您最终会在视图中遇到更多if语句,但是那些少数布尔表达式的效果可以忽略不计。

只需确保您的备用视图样式不会影响您的Controller或模型本身(保存与User表中新列相关的所有方法和验证)。

请务必根据用户选择的样式制作出独特的脚本和样式表(例如,加载单个样式表并动态更改类以使用某些元素会非常 。相反,您希望根据用户选择的样式选择要包含的样式表,并对脚本执行相同的操作。

如果您对此有任何具体问题,请随时查询。在平均时间this will prove to be an important read,如果您还不熟悉材料。