Ruby on rails Rails在所有模型中放置方法的位置

Ruby on rails Rails在所有模型中放置方法的位置,ruby-on-rails,model,global,Ruby On Rails,Model,Global,我应该在Rails中放置一个所有模型都将使用的方法吗?您需要对一个称为“关注点”的Rails约定进行一些研究。下面是详细情况:在应用程序目录中创建名为concerns的子目录。在应用程序/关注点中创建模块,并将模块包含在所有模型中。将app/concerns的路径添加到config/application.rb中的config.autoload_路径 在您进行任何操作之前,我很好奇所有模型中都需要包含什么样的方法?我们讨论了多少个模型,您想解决什么问题?有多种方法可以实现这一目标 在项目中使用O

我应该在Rails中放置一个所有模型都将使用的方法吗?

您需要对一个称为“关注点”的Rails约定进行一些研究。下面是详细情况:在应用程序目录中创建名为concerns的子目录。在应用程序/关注点中创建模块,并将模块包含在所有模型中。将app/concerns的路径添加到config/application.rb中的config.autoload_路径


在您进行任何操作之前,我很好奇所有模型中都需要包含什么样的方法?我们讨论了多少个模型,您想解决什么问题?

有多种方法可以实现这一目标

  • 在项目中使用OOP和为ActiveRecord::Base创建一个子类,并将该类用作所有模型的父类
  • 猴子路径ActiveRecord::Base
  • 创建一个模块,并将其包含在所有模型中

  • 您可以在模块中编写可重用的方法,并将其包含在必要的模型中

    在lib/reusables.rb中创建一个文件

    module Reusable
       def reusable_method_1
         puts "reusable"
       end
    
       def reusable_method_2
         puts "reusable"
       end
    end
    
    假设您想在用户模型中使用它

    class User < ActiveRecord::Base
      include Reusable
    end
    

    服务器启动时的活动记录扩展

    # config/initializers/core_extensions.rb
    class ActiveRecord::Base
      # write ur common base code here
      def self.per_page
        @@per_page ||= 10
      end
    
      def self.pagination(options)
        paginate :per_page => options[:per_page] || per_page, :page => options[:page]
      end
    end
    

    复制品?它用于将数据传输到远程服务器,即socket.io服务器。我正在使用socket.io进行实时更新,我需要从多个型号发送这些更新。同意,Aroop。我认为解决方案需要更高的层次。不过,我对socket.io还不够熟悉。我看到了很多关于这个问题的答案,但没有一个提到在自动加载路径中包含lib+我为此付出了代价!解决了我的问题
    # config/initializers/core_extensions.rb
    class ActiveRecord::Base
      # write ur common base code here
      def self.per_page
        @@per_page ||= 10
      end
    
      def self.pagination(options)
        paginate :per_page => options[:per_page] || per_page, :page => options[:page]
      end
    end