Ruby on rails 创建有多个关系的方法?

Ruby on rails 创建有多个关系的方法?,ruby-on-rails,ruby,Ruby On Rails,Ruby,标杆 has_many :comments has_mant :tags def comments? !self.comments.empty? end def tags? !self.tags.empty? end 检查特定帖子是否有任何评论或标签。我写了一个实例方法注释?标签呢?根据帖子是否有评论和标签,返回true或false 我想为所有的has_许多关系编写一个方法,该方法将提供带有“?”的方法 所以在将来,如果我有10个与post有很多关系,我就不需要为relation1

标杆

has_many :comments
has_mant :tags

def comments?
  !self.comments.empty?
end

def tags?
  !self.tags.empty?
end
检查特定帖子是否有任何评论或标签。我写了一个实例方法注释?标签呢?根据帖子是否有评论和标签,返回true或false

我想为所有的has_许多关系编写一个方法,该方法将提供带有“?”的方法

所以在将来,如果我有10个与post有很多关系,我就不需要为relation1?,relation2?,写10个方法


任何想法。

如果您想要动态定义方法,就像ActiveRecord对各种事情所做的那样,您可以:

class Model
  has_many :x
  has_many :y
  self.reflect_on_all_associations(:has_many).each do |association|
    define_method "#{association.name}?" do
      self.send(association.name).any?
    end
  end
end
这将创建方法
:x?
:y?
。您可以将其放入模块中,并将其包含到所需的模型中


编辑:
any?
相同
空?

谢谢您的代码。你能告诉我如何在模块内写吗?