2012-02-07 58 views

回答

0

你会想对Rails约定称为“关注”做一些研究。这里是lowdown:在您的app目录中创建名为关注的子目录。在应用程序/问题中创建您的模块,并将模块包含在您的所有模型中。将config/application.rb中的应用程序/关注点路径添加到config.autoload_path。

在你做任何事情之前,我很好奇所有模型都需要包含哪种方法?我们正在谈论多少个模型以及您想要解决什么问题?

+0

这是数据到远程服务器,即一个socket.io服务器。我使用socket.io进行实时更新,我需要从多个模型发送这些更新。 – JRPete 2012-02-07 06:13:08

+0

我不认为关注是正确的, – 2012-02-07 06:14:42

+0

同意,Aroop。我认为解决方案需要处于更高层次。不过,我对socket.io不够熟悉。 – 2012-02-07 12:47:28

2

有多种方法,使你可以做实现这一

  1. 使用OOP,并在你的项目中创建ActiveRecord的:: Base的一个子类,并使用这个类作为所有车型
  2. 猴路径的ActiveRecord :: Base的
  3. 创建一个模块,并包括在所有模型
9

你可以写在一个模块中可重复使用的方法,包括在必要的车型。

创建LIB文件/ reusable.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 

,还要确保在启用autoload_path的lib /目录application.rb

# Custom directories with classes and modules you want to be autoloadable. 
config.autoload_paths += %W(#{config.root}/lib) 
+0

我看到了很多这个问题的答案,并没有提到在autoload_paths中包含lib。 +1!解决了我的问题 – 2013-12-08 12:57:21

3

服务器启动时的有效记录扩展

# 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 
相关问题