我想在我的App的一些AR模型中添加一些方法;但我认为它们应该只在某些情况下可用;这需要一些元编程。
所以我想有一个文件,我把我所有的调试方法,唯一的问题是在哪里把它?
示例,我有模型:
class Admin::Restaurant < ActiveRecord::Base
class Admin::Order < ActiveRecord::Base
在我的文件中,我有(它确实取决于MetaWhere.operator_overload!
初始化):
if Rails.env != 'production'
class Admin::Order
def self.mock_make
r = Restaurant.first
user_query = User.where( :created_at > "2011-04-01" )
u = user_query.first( :offset => ( user_query.count * rand ).to_i )
o = r.orders.new
o.user = u
o.value = rand(100) + rand.round(2)
if o.save
return o
else
return nil
end
end
end
end
事情是……我不能让它工作在/config/initializers
或/app/models
将其包装为外部模块,并以if
条件包含
class MyClass << ActiveRecord::Base
include MyExtraModule if Rails.env == 'development'
end
放到config/environments/development.rb