在Rails中,如何访问模型中的控制器数据

时间:2013-01-04 21:49:34

标签: ruby-on-rails model-view-controller gabba

方案

我有一个应用程序,我希望事件记录到第三方(通过自定义模块利用Gabba混入我的模型)。事件在模型中生成,但生成事件的服务器端代码需要访问当前请求的cookie。

MVC问题

这是模型需要控制器包含的数据的问题的专门化。坚持MVC,模型不应该访问控制器。我见过的答案是将所需的值作为参数传递给模型。 虽然我在大多数情况下同意这种方法,但我认为这不是最佳解决方案,因为一般情况下它是未知的,如果模型要生成事件,则不是控制器的关注。

所以对于一个具体的例子:

想象一下,'用户'模型有一个名为'create'的静态方法。 UsersController使用用户哈希调用create方法。 create方法想要向Gabba发布“用户创建”事件,但是需要解析当前请求的Google Analytics分析Cookie。 向用户#create 发送Cookie似乎不对。

我想到的是:

  1. 将metrics模块所需的cookie值放在某些可由模型访问的全局数据存储中。 (哪里是最好的地方?)
  2. 将事件放在某种存储中,让控制器在处理请求结束时运行事件代码。

0 个答案:

没有答案