Rails基于两个字段查找或创建

时间:2010-10-16 17:06:05

标签: ruby-on-rails ruby

我有一个场地模型,我想这样做

Venue.find_or_create_by_

但我只想要一个新的场地,如果一个名字和日期不同的话就不存在了

例如

=> Venue(id: integer, location: string, showdate: datetime, created_at: datetime, updated_at: datetime)

场地是唯一的,如果db中没有位置和showdate,则需要创建场地

2 个答案:

答案 0 :(得分:42)

您可以使用_and_将列链接在一​​起。这应该可以解决问题:

Venue.find_or_create_by_location_and_showdate(location, showdate)

答案 1 :(得分:1)

my_class = ClassName.find_or_initialize_by_showdate_and_location(showdate,location)
my_class.update_attributes!

find_or_initialize方法按名称和数据库中的位置查找。如果记录不存在,则使用showdate和location初始化新记录。 http://api.rubyonrails.org/classes/ActiveRecord/Base.html此链接将帮助您找出find_or_initialize和find_or_create。