为没有关联的资源创建嵌套路由是否被认为是不良实践(或非restful) ?例如:
resources :foos do
resources :bars
end
但是我在数据库或应用程序的其他地方没有将:foos
与:bars
关联的业务逻辑。
我想这样做的原因:我的许多路由被创建为嵌套在我的:groups
资源下的资源。我这样做,以便我可以始终抓取group_id
参数,并始终显示与用户当前"在"的组匹配的布局。当资源belongs_to
组:
/团体/1/评论/1
但是当其他一些评论没有belong_to
组(group1)时,我想通过"烙"为group1的布局来查看它,我的冲动是像这样路由它:
/团体/1/评论/2
这样可以吗,也许我想多了?
我维护一个具有类似要求的应用程序。我大致做了如下的操作:
class User
has_and_belongs_to_many :groups
belongs_to :active_group, class_name 'Group'
def active_group
return super unless super.nil?
group = groups.first
update_columns(active_group_id: group.id)
group
end
end
User
类验证它们被分配给一个或多个组,并且如果是第一次登录,则覆盖active_group
方法以提供默认值。使用这种方法,您将需要提供一个操作来设置活动组,以便用户可以切换组(假设这是一个需求)。
这假设您有某种身份验证来了解当前用户。如果不考虑限制对组的访问,可以放弃习惯关系,用Group.first
代替groups.first
。
如果您没有/想要/需要身份验证,您可以在会话cookie中删除active_group_id
。但是我肯定认为嵌套不相关的资源是不好的做法。