0

我知道模型不应该知道会话数据,但我需要访问模型上定义的 method_missing 中的一小部分状态信息。由 method_missing 捕获的方法由表单助手调用,即:

client_medias/new.haml:
    f.text_field :new_display_name

client_media.rb:
    has_many :custom_properties, :as => :extensible

这里的 'new_display_name' 是通过多态关联定义的自定义属性键。我需要知道上下文(在我的情况下,由控制器中可访问的 current_app 方法提供)以获取不同自定义属性键的集合,我将其映射到 method_missing 中的动态方法定义。

有任何想法吗?我查看了 Thread.current 并且现在倾向于使用它。

4

1 回答 1

0

我们有一个类似的问题,我们在一个应用程序中处理多个命令。在我们的例子中,上下文是命令,它是通过用户加载站点的顶级域来识别的。

我们的方法是使用 I18n 中的逻辑来提供一个“单例”,我们可以在应用程序的每个部分中访问它,就像它I18n.locale也使用 which uses一样Thread.current

然后,我们在应用程序控制器中将单例设置为前置过滤器,以便应用程序的每个其他部分都可以在同一响应中使用它。

作为起点,看看 sven fuchs 的实现https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb

于 2012-04-27T06:36:46.563 回答