Проверка на существование

Я хочу подтвердить свою запись в базе данных. Другими словами, проверьте, присутствуют ли входные данные в таблице, если они не отпущены, иначе остановитесь и отобразите сообщение об ошибке, например, при проверке присутствия и т. Д. Насколько я знаю, в Rails нет проверок: существование или что-то в этом роде. 4.2. Вопрос: Есть ли простой способ сделать это?

Если нет, я могу вручную проверить наличие в моем контроллере следующим образом:

@client = Client.where("name = ?", @request.name).take
if @client.present?
  @request.client_id = @client.id
else    
  # some error message
  render 'new'
end

Я думаю, что это должно работать, но как отображать сообщение об ошибке, а не мигать.


person yerassyl    schedule 18.06.2015    source источник


Ответы (1)


Вы можете использовать uniqueness helper, чтобы проверить уникальность имени клиента.

class Client < ActiveRecord::Base
  validates :name, uniqueness: true
end

И если это не соответствует вашим потребностям, вы всегда можете создать метод custom validation. и добавить ошибки

  class Client < ActiveRecord::Base
  validate :some_custom_method

  def some_custom_method
    # check for some condition
    # add error messages if that condition fails
  end
end

PS, если вы используете помощника по уникальности, обязательно добавьте уникальное ограничение в свой db.

Обновить:

Вы можете добавить сообщения об ошибках следующим образом:

def some_custom_method
  errors.add(:base, "error message") unless some_condition
end

Подробнее см. на странице working with errors.

person Mandeep    schedule 18.06.2015