我正在尝试根据当前经过身份验证的用户的属性在我的应用程序的主页上执行不同的操作。例如:
location, user, state, -> destination
/, no user -> a home page
/, user authenticated, state: unverified -> user profile page
/, user authenticated, state: verified -> a content listing
这看起来是我试图根据当前用户的状态(由状态机表示)来“路由”。这3个动作已经存在于3个不同的控制器中(我称之为“页面”,“用户”和“帖子”),但是当一个人可以调用另一个控制器的视图时,人们无法调用另一个控制器的动作,使其变得有点困难不要重复自己。有很多方法可以解决这个问题,但我不确定The Rails Way的用途是什么,所以我想我会问。我认为是我的选择:
我倾向于第三种选择,明显的缺点是某些控制器现在或多或少地莫名其妙地生活在ApplicationController中(除非,上帝帮助我,我做了一些Lovecraftian包括在扩展)。让这些代码在两个地方生活对我来说很脏。
我错过了一些明显的东西吗?
答案 0 :(得分:1)
使用帮助程序的单个操作是否会根据用户的当前状态选择正确的部分?
另外,请看一下使用ActiveSupport :: Concern而不是让所有Lovecraftian包含在扩展中。 http://api.rubyonrails.org/classes/ActiveSupport/Concern.html