Подтвердить что ты не робот

Рельсы находят или создают на основе двух полей

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

Venue.find_or_create_by_

но я хочу, чтобы новое место создавалось, если одно имя и дата еще не существуют.

Например

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

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

4b9b3361

Ответ 1

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

Venue.find_or_create_by_location_and_showdate(location, showdate)

Ответ 2

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

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

Гораздо красивее, если вы спросите меня!

Ответ 3

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.