如何检查是否有**保存的**关联记录而不是**内存**关联记录

时间:2016-01-14 15:26:26

标签: ruby-on-rails activerecord associations

我有两个相关的模型:

class HelpRequest < ActiveRecord::Base
  has_many :donation_items, dependent: :destroy

class DonationItem < ActiveRecord::Base
  belongs_to :help_request

我有一个验证器,如果用户试图保存help_request而没有donation_items,则会向用户返回错误。

validate :has_donation_items?
...
def has_donation_items?
  if !self.donation_items.present?
    errors.add :a_help_request, "must have at least one item."
  end
end

但是,这是在保存之前检查当前的内存状态。但是,我需要在重新呈现表单时,即使donation_item有未保存的help_request来测试donation_items是否有任何已保存的help_request }。

有没有办法测试已保存的关联的donation_items ,而不必逐步浏览每个内存中donation_item并测试它是否&# 39;新纪录?

我希望有一些像这样的简单(明显已经化妆)的例子:

@help_request.saved_donation_items.present?

1 个答案:

答案 0 :(得分:1)

使用收集和任何? 这会对您的项目进行循环,但它非常简洁

@help_request.donation_items.collect{|di| di.persisted?}.any?

或者再次点击数据库(假设已经保存了help_request)

HelpRequest.find(@help_request.id).donation_items.any?