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

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

Venue.find_or_create_by_ 

但我只想要一个新的场地,如果一个名称和日期相同的场地尚未存在

例如

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

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

您可以使用_and_列链接在一​​起。 这应该是诀窍:

 Venue.find_or_create_by_location_and_showdate(location, showdate) 

在rails 4中你会做:

 Venue.find_or_create_by(location: location, showdate: showdate) 

如果你问我,那就更漂亮了!

 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。