我正在使用Paperclip在子模型和通过belongs_to定义的父模型上定义名为badge的附件。我想覆盖@ instance.badge,使其返回模型徽章(如果可用),否则返回父徽章。
我开始执行以下操作,直到我意识到read_attribute始终返回nil并使用父徽章。有没有办法读取徽章方法的结果,如果返回nil,请改用父徽章方法?
我更喜欢保留名为badge的方法,而不是使用单独的child_or_parent_badge方法。
def badge
read_attribute(:badge) || parent.badge
end
答案 0 :(得分: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