Rails найти или создать на основе двух полей - PullRequest
21 голосов
/ 16 октября 2010

У меня есть модель объекта, и я хочу сделать это

Venue.find_or_create_by_

, но я хочу создать новое место только в том случае, если оно с таким именем и датой еще не существует

Например,

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

Место проведения является уникальным и должно быть создано, если местоположение и дата шоу отсутствуют в БД

Ответы [ 3 ]

42 голосов
/ 17 октября 2010

Вы можете связать столбцы вместе, используя _and_. Это должно сделать трюк:

Venue.find_or_create_by_location_and_showdate(location, showdate)
7 голосов
/ 02 мая 2015

В рельсах 4 вы бы сделали:

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

Намного красивее, если вы спросите меня!

1 голос
/ 16 октября 2010
my_class = ClassName.find_or_initialize_by_showdate_and_location(showdate,location)
my_class.update_attributes!

find_or_initialize метод поиска по имени и расположению в базе данных.Если запись не существует, инициализируйте новую запись с указанием даты и местоположения.http://api.rubyonrails.org/classes/ActiveRecord/Base.html Эта ссылка поможет вам выяснить find_or_initialize и find_or_create.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...