我有一个应用程序,为每个“帐户”使用子域名。
根据我的阅读,"Tie all top-level requests off the current account (subdomain)"是一种很好的做法。
e.g。
def find_users
@users = @current_account.users
end
足够简单。但是当我开始使用深度嵌套的路由时,我不能使用浅路由而不会丢失子域的范围。
那么我如何实现浅层路由并保持这种完整性呢?
我唯一想到的是:
在一些更深层嵌套的模型中包含一个外键到顶层(子域)。但这似乎有点黑客。
使用before_filter来回溯关联并检查子域是否成立。这似乎更合乎逻辑,但仍然感觉不太好。
有没有人对此有所了解?
答案 0 :(得分:0)
我最近一直在玩act_as_restricted_subdomain使用外键,发现它非常容易使用:
http://github.com/penguincoder/acts_as_restricted_subdomain
它会覆盖ActiveRecord的默认行为,因此如果您指定了一个帐户/子域,则User.find(123)与Subdomain.users.find(123)相同,这使得编写代码更加清晰,因为它允许您编写应用程序不必担心子域的限制。
拥有外键的主要缺点是db查询在数据集扩展时需要更长时间才能执行,但是放入适当的命名索引可以减轻这种影响。