我有两个模型构建和列表。 Listing模型属于Building。我们一直试图限制可以在列表中创建的记录数量,具体取决于给定时间的活动列表记录的数量,例如Listing.active.count永远不会超过X.我们尝试使用验证,如果将Building中的整数列用作限制,但它无效并且收到以下错误,
undefined method `>=' for #<Array:0x007f05ec4db388>
Listing.rb
Class Listing < Application Record
validates :validate_listing_count, on :create
private
def validate_listing_count
errors.add(:base, "You have too many active listings, please destroy a listing or contact your Account Manager if you need more listings") unless too_many_siblings?
end
def active_siblings
building.listings.where(active: true)
end
def too_many_siblings?
active_siblings.select { |sib| sib.id != id } >= (building.listing_limit - 1)
end
end
答案 0 :(得分:1)
active_siblings.select
返回一个数组,你想要数组中的项目数。试试这个:
def too_many_siblings?
active_siblings.select { |sib| sib.id != id }.count >= (building.listing_limit - 1)
end
这可能不是问题的一部分,您可能希望将unless
更改为if
中的validate_listing_count
。我认为根据你对问题的描述更合乎逻辑。