我有两个相关的模型:
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?
答案 0 :(得分:1)
使用收集和任何? 这会对您的项目进行循环,但它非常简洁
@help_request.donation_items.collect{|di| di.persisted?}.any?
或者再次点击数据库(假设已经保存了help_request)
HelpRequest.find(@help_request.id).donation_items.any?