我想知道在创建对象之前检查对象是否存在的最佳方法是什么?
我想存储搜索查询,但如果数据库中已经有一个,那么每次都创建一个新查询是没有意义的。我宁愿增加一个计数器以获取有关最常见查询的统计信息。
我最大的问题是如何检查对象是否已经在基础中。我想知道是否有一些神奇的功能可以在不拉出整个表格并检查其中一个对象是否等于新对象的情况下进行检查?
此外,它确实必须在表单上find_or_create( myObject )
并检查所有属性是否相同(每个查询对象我都有很多)并且id
当然忽略。
所以这意味着我不能使用find_or_create_by_region_id_and_departement_id_and_other_attr
啊,我正在使用 Rails 3.2.6 :)
知道怎么做吗?
编辑以添加搜索查询的表结构:
# == Schema Information
#
# Table name: search_queries
#
# id :integer(4) not null, primary key
# region_id :integer(4)
# departement_id :integer(4)
# ville :string(255)
# environnement_id :integer(4)
# etoiles_min :integer(4)
# etoiles_max :integer(4)
# tente :boolean(1)
# caravane :boolean(1)
# campingcar :boolean(1)
# mobilhome :boolean(1)
# chalet :boolean(1)
# bungalow :boolean(1)
# yourte :boolean(1)
# roulotte :boolean(1)
# tipi :boolean(1)
# autres :boolean(1)
# wifi :boolean(1)
# restaurant :boolean(1)
# epicerie :boolean(1)
# depotpain :boolean(1)
# laverie :boolean(1)
# espace_aqua :boolean(1)
# club_enfant :boolean(1)
# multisport :boolean(1)
# loc_velo :boolean(1)
# acces_pmr :boolean(1)
# animaux :boolean(1)
# naturiste :boolean(1)
# l_campingqualite :boolean(1)
# l_qualitetourisme :boolean(1)
# l_tourismehandicap :boolean(1)
# l_ecotourisme :boolean(1)
# l_normandiequalite :boolean(1)
# l_ancv :boolean(1)
# created_at :datetime not null
# updated_at :datetime not null
#