就像你說的你可以試試拉姆達但我不確定它是否會工作。事情是這樣的:
belongs_to :article, :touch => Proc.new{|o| o.article && o.article.public }
按照implementation也許你可以嘗試在proc返回nil
,而不是false
,
belongs_to :article, :touch => Proc.new{|o| o.article && o.article.public ? true : nil }
如果這不工作使用之前保存時,它的不可用回調如下:
class Model < ActiveRecord::Base
belongs_to :article
before_save :touch_public_parent
def touch_public_parent
article.touch if article && article.public?
end
end
讓我知道如果您有任何問題。
更新#1
相關部分從add_touch_callbacks
:
if touch_attribute == true
association.touch unless association.nil?
else
association.touch(touch_attribute) unless association.nil?
end
所以,如果你通過真實的,那麼確實就updated_at
屬性簡單的觸摸。如果您傳遞字段名稱,則會更新該字段,除非您通過nil
。如果你通過零不會更新什麼。這就是爲什麼我說,也許你可以嘗試第二版belongs_to
關聯。
沒有與你在答案中鏈接的add_touch_callbacks方法相關的文檔...你能說一些關於它的更多信息嗎(例如:它是如何工作的)? – Backo 2012-01-16 04:48:14
@Backo當然,請看我最新的答案。 – dombesz 2012-01-16 09:32:05
非常感謝。見下一個問題/答案! – Backo 2012-01-16 11:18:23