1

我想为模型(在本例中为 Participant 模型)编写一个方法,该方法查看其关联的特定集合并简单地记录是否存在任何关联。这是我所拥有的:

  def post_screener_associations?
    ParticipantAuthorizationForm.where(:participant_id => self.id).count > 0
    ParticipantConsent.where(:participant_id => self.id).count > 0
    # and so on exactly like the format above about 8 more times!
  end

我知道有更好的方法来编写此查询,但我不想打扰我的同事。谢谢。

4

2 回答 2

0
  def post_screener_associations?
    self.class.reflect_on_all_associations.all? { |a| send(a.name).present? }
  end

这应该询问每个关联是否存在,如果所有存在的方法都将返回 true,则以另一种方式它将是 false

于 2013-04-03T18:08:18.967 回答
0

如果您不想使用反射,另一种选择。它类似于您的原始帖子,使用参与者模型上的活动记录方法对其进行了简化。

def post_screeener_associations?
  participant_authorization_form.present? ||
  participant_consent.present? ||
  # etc.
end
于 2013-04-03T19:27:14.930 回答