Rails - 帮助代码的最佳位置

时间:2013-06-07 09:07:58

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

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:1)

首先,将参数呈现给js代码的代码应该在视图中。视图用于生成输出。

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

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