有無論如何創建一個函數,我可以在模型和控制器都調用?我有一個函數抓取一系列文件並關閉擴展,並希望根據列表進行驗證。但是我也想在控制器中訪問這個列表,這樣我就可以輸出選項的選擇框。我目前有這個,但VALID_MODULES不會一直填充。Rails創建一個方法可以通過模型和控制器
class Job < ActiveRecord::Base
after_initialize :init
VALID_MODULES =[];
validates :name, presence: true
validates :desc, presence: true
validates :api, presence: true, :inclusion => { :in => VALID_MODULES}
validates :filters, presence: true
validates :toe, presence: true
def init
Dir.foreach('lib/resources') do |item|
next if item == '.' or item == '..' or item == 'resource.rb'
#Wont be called very often so O(n) complexity is fine (small #elements)
VALID_MODULES.push(item[0..-4]) unless VALID_MODULES.include?(item[0..-4])
end
end
end
幾件事情。 1)這些模塊是否特定於Job類?他們是否特定於工作實例?或者它們對於應用程序來說是全局的2)你也不想在初始化時執行這個功能,因爲這將會從你從數據庫中提取的每條記錄執行,並且將會非常昂貴。這些問題的答案會影響正確的解決方案。 –
Peter,valid_modules對應用程序來說真的是全球性的。是的,我認爲這是我能夠使用這些值作爲驗證並能夠在控制器中訪問它的唯一方法。 –