0
我正在處理的一個應用程序試圖在不使用多態性的情況下使用多態的概念。自定義belongs_to屬性編寫器
class User
has_many :notes
end
class Customer
has_many :notes
end
class Note
belongs_to :user
belongs_to :customer
end
固有我們有筆記兩列:user_id
和customer_id
,現在這裏的壞事是有可能的便條到現在已經有一個customer_id
和user_id
在同一時間,這是我不想要的。
我知道一個簡單/更好的方法是使筆記表多態,但有一些限制,阻止我現在這樣做。
我想知道是否有一些自定義的方式來覆蓋這些關聯,以確保分配一個時,另一個未分配。
這裏是我試過的:當使用
def user_id=(id)
super
write_attribute('customer_id', nil)
end
def customer_id=(id)
super
write_attribute('user_id', nil)
end
這不起作用:
note.customer=customer or
note.update(customer: customer)
,但工程使用的時候:
note.update(customer_id: 12)
基本上,我需要一個可以適用於這兩種情況,而無需編寫4種方法:
def user_id=(id)
end
def customer_id=(id)
end
def customer=(id)
end
def user=(id)
end
謝謝。這個問題是,在堅持一條記錄之前,我會同時記錄兩個狀態,因此,如果我有一個像'before_save:do_something_to_owner'這樣的應用程序,那麼該應用程序就會變得混亂,因爲這兩個狀態當前存在並且依賴於順序回調不好。另一個越野區域將一次更新兩個字段,現在總是回退到第一個分支,現在假設我只是將字段更新爲零,然後我還需要再次檢查參數。雖然似乎是一個很好的解決方案,但我認爲它會在以後出現更多的錯誤。我想我會在這裏明確 – oreoluwa