0
我想知道是否有可能在運行時使用自定義回調代碼在Rails中賦予模型?Rails:運行時自定義回調?
我有一個情況,我有很多「節點」正在創建「事件」,並且每個節點可能需要在事件上運行特定的回調。例如,一個節點在創建事件之前可能需要向第三方API發出額外數據。創建事件後,另一個節點可能需要向其所有者發送電子郵件。
在我的頭上,這是有道理設立這樣的事情時,我做了一個「POST /節點/ 4 /事件」:
class Nodes::EventsController < ApplicationController
def create
# ...security checks in place and we have a @node
if @node.requires_custom_callbacks?
# Load the file with callbacks for @node.id,
# something like Node4EventExtensions
# Apply Node4EventExtensions to the Event model
end
Event.create
end
end
這將保持特定節點的代碼我的事件模型,並允許我分別構建/測試自定義節點擴展。這是否有可能在Rails中脫穎而出?我還有另外一種方式來看待這個嗎?
你想描述一個工作流引擎嗎? –
我不得不查找工作流引擎。我不認爲這正是我正在尋找的。我的一些節點在發佈活動時有特定的自定義要求。 Node20可能需要一個before_create回調來ping第三方API以獲得許可,而Node22可能需要after_create才能在成功時發送電子郵件。 我的想法是,我可以創建類似「Node20Event」模塊的東西,並將其動態地包含到Event中,以便Event在請求期間的行爲與Node20Event類似。我還沒有找到辦法解決這個問題。 –
那麼你可能需要創建你的模型的子類。 –