维护嵌套模型与子域的完整性?

时间:2009-10-01 23:51:31

标签: ruby-on-rails

我有一个应用程序,为每个“帐户”使用子域名。

根据我的阅读,"Tie all top-level requests off the current account (subdomain)"是一种很好的做法。

e.g。

def find_users
  @users = @current_account.users
end

足够简单。但是当我开始使用深度嵌套的路由时,我不能使用浅路由而不会丢失子域的范围。

那么我如何实现浅层路由并保持这种完整性呢?

我唯一想到的是:

  1. 在一些更深层嵌套的模型中包含一个外键到顶层(子域)。但这似乎有点黑客。

  2. 使用before_filter来回溯关联并检查子域是否成立。这似乎更合乎逻辑,但仍然感觉不太好。

  3. 有没有人对此有所了解?

1 个答案:

答案 0 :(得分:0)

我最近一直在玩act_as_restricted_subdomain使用外键,发现它非常容易使用:

http://github.com/penguincoder/acts_as_restricted_subdomain

它会覆盖ActiveRecord的默认行为,因此如果您指定了一个帐户/子域,则User.find(123)与Subdomain.users.find(123)相同,这使得编写代码更加清晰,因为它允许您编写应用程序不必担心子域的限制。

拥有外键的主要缺点是db查询在数据集扩展时需要更长时间才能执行,但是放入适当的命名索引可以减轻这种影响。