gpt4 book ai didi

ruby-on-rails - 模型和助手中的常用方法

转载 作者:行者123 更新时间:2023-12-03 11:47:15 26 4
gpt4 key购买 nike

我的模型中存在一个通用方法,因为它是由我的模型调用的。回想起来,我的观点也需要这种模式方法。为了做到这一点,我有:

  • 将模型方法移至 application_helper.rb文件
  • 我的模型通过添加 include ApplicationHelper 来调用 application_helper 方法在我的 ActiveRecord 模型的顶部

  • 功能方面,它有效。但这是好的做法吗?

    我的模型如下所示:
    class Client < ActiveRecord::Base
    include ApplicationHelper
    end

    最佳答案

    写作 include ApplicationHelper在你的模型中是不好的做法,因为 ApplicationHelper 是一个很好的地方,可以在你的 View 中放置大量你需要的辅助函数。这些函数最终将作为模型的实例方法导入。这些函数大多与您的模型无关,如果它们依赖于 params 之类的东西,它们将不起作用。或 request .这里有另外两个选项:

    选项 1:

    您可以在 Client 中定义方法类,然后从 View 中调用它,如下所示:

    class Client < ActiveRecord::Base
    def self.my_class_method
    end
    def my_instance_method
    end
    end

    然后在你看来:
    <%= Client.my_class_method %>
    <%= @client.my_instance_method %>

    选项 2:

    lib 中创建一个单独的模块并将其包含在您需要的地方。文件名应与自动加载工作的模块名称匹配。

    lib/my_module.rb :
    module MyModule
    def my_method
    end
    end

    在您的模型中:
    class Client < ActiveRecord::Base
    include MyModule
    def other_method
    my_method
    end
    end

    在 ApplicationHelper 中包含该模块,以便您的所有 View 都可以使用它:
    module ApplicationHelper
    include MyModule
    end

    然后在您看来,您可以轻松调用它:
    <%= my_method %>

    关于ruby-on-rails - 模型和助手中的常用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6887319/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com