如果孩子的Paperclip为零,我该如何返回父母的附件

时间:2011-09-06 15:47:55

标签: ruby-on-rails ruby-on-rails-3 paperclip

我正在使用Paperclip在子模型和通过belongs_to定义的父模型上定义名为badge的附件。我想覆盖@ instance.badge,使其返回模型徽章(如果可用),否则返回父徽章。

我开始执行以下操作,直到我意识到read_attribute始终返回nil并使用父徽章。有没有办法读取徽章方法的结果,如果返回nil,请改用父徽章方法?

我更喜欢保留名为badge的方法,而不是使用单独的child_or_parent_badge方法。

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

1 个答案:

答案 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