0
我是新手,我有一個關於如何在我的模型關聯上強制執行自定義規則的問題。如何在ActiveRecord協會中實施包含規則
例如,假設我有:
class Person < ActiveRecord::Base
belongs_to :organization
end
class Organization < ActiveRecord::Base
has_many :people
end
,現在假設我只想讓Organization.people << Person.new(...)
命令執行成功,如果新Person
對象是與先前加入到Organization
其他people
兼容。這將需要在所有現有的Organization.people
元素上運行驗證檢查,並決定是否可以添加新的Person
。
在我看來,我可以通過覆蓋所有Organization.people
賦值操作符(如<<
和=
)並將驗證邏輯放入覆蓋例程來完成此操作。
這是完成這個最好的方法嗎?
謝謝!
我明白你的意思了。但是,這個決定確實屬於組織類。人員類別不應決定由誰組織的人員 - 這應該由組織決定。因此,我想我會建議觸發Person類的驗證(即通過對組織進行驗證),但驗證只會通過調用Organization類中的決策功能將決策委託給組織。謝謝。 – Denis
是的,我同意。你可以很容易地得到一個驗證:等等,然後做一個委託:等等。 –