0

这是一个最佳实践问题。我有一个模型存储一些参数,用于生成 javascript 文件。一个模型实例生成一个文件。我使用 erb 模板进行参数替换。问题是 - 在每次模型更新后将生成 js 文件的代码放在哪里?模型文件看起来不是一个好的选择,因为模型不应该知道所有的 erb 和文件混乱。通常在用户请求的情况下调用控制器,但情况并非如此。我已经开始关注观察者,但仍有疑问。

4

2 回答 2

1

观察者将是一个很好的解决方案:首先rails generate observer jsfile在您的终端中运行。我正在使用jsfile您的型号名称。

根据您的需要编辑您的观察者,例如

class JsfileObserver < ActiveRecord::Observer
    observe :jsfile

    # after_save works both for update and create, which I guess is what you want
    def after_save(record)
        # generate the file with the params from your record
    end
end

最后,别忘了调整你的config/application.rb文件

# Activate observers that should always be running.
config.active_record.observers = :jsfile_observer

当然,您必须重新启动服务器;)

于 2013-06-07T09:26:00.190 回答
1

首先,将参数渲染为 js 代码的代码应该在视图中。视图用于生成输出。

其次,我会将要写入文件的代码放在控制器中。控制器链接模型和视图。
必须有一些事件来生成文件。它可能是对象的创建、对象的更改或生成文件的一些显式请求。
这些事件中的每一个都应该由控制器处理。

观察者更多的是处理“副作用”。

于 2013-06-07T09:36:12.023 回答