我試圖做到這一點默默跳過添加before_add關聯回調,而不是引發異常?
has_many :roles, :before_add => :enforce_unique
def enforce_unique(assoc)
false if exists? assoc
end
從文檔:「如果一個before_add回調拋出一個異常,對象不會被添加到集合」。在使用上述虛假不阻止補充,所以我不得不這樣做:
def enforce_unique(assoc)
raise if exists? assoc
end
這樣一來,這是真的,它不會增加,但同時也提出了一個必須處理的異常。這裏對我不太有用。我更喜歡這種行爲更像普通的AR回調before_save,其中返回FALSE也阻止保存(或添加),但不會引發異常。
在上面的例子中,我寧願這樣做只是不會默默地添加關聯。有沒有辦法做到這一點?我錯過了什麼?或者在這裏提出一個例外唯一的選擇?