我有兩個Rails 2.3應用程序,我們將其稱爲admin和前端。在admin我有我的所有型號在app/models
指定。在前端我有那些模型符號鏈接。我想將前端特定的方法添加到僅顯示前端應用程序的模型中,而不是管理程序應用程序。Rails在不修改基本文件的情況下擴展模型
一開始我嘗試只是增加config.autoload_paths += "#{RAILS_ROOT}/app/augments/address.rb"
有:
class Address
def hello
"hello world"
end
end
但是,這只是沒有加載。致電Address.first.hello
將遇到undefined method 'hello'
。
如果我需要做這個文件:
Address.class_eval do
def hello
"hello world"
end
end
它加載一次,併爲發展先打它的工作原理,但它發生故障,所有後續重新加載。這是由於config.cache_classes = false
正在開發中。
一個半工作解決方案是運行都是從ApplicationController:
class ApplicationController < ActionController::Base
Address.class_eval do
def hello
"hello world"
end
end
end
哪些呢重裝和工程開發andprod每一次,但對於腳本/亞軍或腳本/控制檯不起作用。 (如果這是唯一的解決方案,我確信我們可以將其提取到模塊中,並在ApplicationController中使用include ModelExtensions
。)
有什麼我可以添加到environment.rb或初始化程序,每次開發時都會重新加載?
是的,但我不想實際添加** AddressModelExtensions **到我的address.rb,因爲這不適用於我的**管理**應用程序,因爲該模塊只生活在**前端** – 2011-04-14 23:02:02
嗯...是的,我知道了。只是一個問題,爲什麼你應該使用兩個不同的應用程序 – 2011-04-14 23:03:46
代碼分離和加載。另外,它們將在NewRelic中分別顯示,我們可以分別對它們進行縮放。 – 2011-04-14 23:11:46