代码之家  ›  专栏  ›  技术社区  ›  Robert Hurst Patrick Ryan

如何将具有自定义名称的模型加载到控制器中

  •  0
  • Robert Hurst Patrick Ryan  · 技术社区  · 16 年前

    我正在尝试访问全局系统设置的模型。它应该加载到几乎每个控制器中。问题是我找不到任何帮助,让铁路装载大坝的东西。

    如果这样做有帮助,则模型称为config,有两列:“key”和“value”

    我来自PHP的背景。我记得编码器点火器可以通过加载模型。

    $this->load->model('a_model_name');

    我试图加载模型的控制器与模型的名称不同。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Gareth    16 年前

    这里的问题 实际上是模型的名称。配置由其他Rails类使用-请参见 list of reserved names 在Rails wiki上

        2
  •  1
  •   Gareth    16 年前

    Rails在需要时自动加载类。只要类在一个同名的文件中,并且它在Rails查找类的目录中,就可以像加载类一样使用它,Rails会自动加载它。

        3
  •  1
  •   klew    16 年前

    您可以添加 before_filter 在应用程序控制器中:

    before_filter :load_config
    
    ...
    private
    def load_config
      something
    end
    

    默认情况下,Rails中的所有控制器都继承自ApplicationController,因此所有控制器都将执行 load_config 方法。

    顺便说一下,我真的很喜欢 rails-settings 用于配置的gem/plugin。这可能是你需要的。它在需要时加载数据,因此您不必在每个控制器中加载config,只需在需要某个值时执行以下操作:

    Settings.key
    

    你得到你想要的。

        4
  •  0
  •   Mike Tunnicliffe    16 年前

    假设,如果你想用一个特定的密钥加载一段信息,你可以使用 Config.find_by_key('the_key_you_want') 以获得有问题的记录。

    我不确定这是否是处理配置的最佳方法,但这实际上取决于系统需要如何工作。

    编辑:

    在我发布我的答案之前没有看到你对问题的更新,似乎我误解了你的意思。把这个答案留在这里,以防有用,加雷斯的答案似乎是一个公平的答案。