2011-09-06 33 views
2

我正在使用回形針來定義附件稱爲徽章,無論是在子模型和通過belongs_to定義的父模型。我想重寫@ instance.badge,使其返回模型的徽章(如果可用),否則返回父徽章。我如何返回父母的附件,如果孩子的零與回形針

我開始執行以下操作,直到我意識到read_attribute始終返回nil並使用父徽章。有沒有辦法讀取徽章方法的結果,如果返回零,請使用父徽章方法?

我寧願保留名爲badge的方法,而不是有一個單獨的child_or_parent_badge方法。

def badge 
    read_attribute(:badge) || parent.badge 
end 

回答

3

命名方法徽章會讓你的生活變得更加複雜,更有意義的名字爲它做什麼的助手,並留下附件名稱相同的,所以您可以直接訪問它。

class Parent < ActiveRecord::Base 
    has_many :childs 
    has_attached_file :badge 
end 

class Child < ActiveRecord::Base 
    belongs_to :parent 
    has_attached_file :badge 

    def resolve_badge 
    badge || parent.badge 
    end 
end 
+0

是的,可能是最好的方法。只是確保沒有不同的方式,但我會做到這一點。謝謝。 –