В Ruby on Rails ActiveRecord предоставляет мощную функцию, называемую валидацией, которая позволяет вам гарантировать целостность данных ваших моделей. По умолчанию эти проверки выполняются для столбцов, которые соответствуют именам атрибутов в таблице базы данных. Однако могут быть случаи, когда по разным причинам вы захотите использовать собственные имена столбцов в своих проверках. В этой статье мы рассмотрим несколько методов достижения такой настройки, а также приведем примеры кода.
Метод 1: использование параметра :in
class User < ApplicationRecord
validates :username, presence: true, uniqueness: true, on: :create, column: :login
end
Объяснение: В этом методе мы используем параметр column, чтобы указать имя пользовательского столбца loginдля атрибута username. Проверка будет выполняться для столбца loginвместо столбца usernameпо умолчанию.
Метод 2: переопределение метода атрибута
class User < ApplicationRecord
attribute :login, :string, default: ''
validates_presence_of :login
validates_uniqueness_of :login, on: :create
end
Объяснение: Здесь мы переопределяем метод атрибута для usernameна login. Сделав это, мы создадим виртуальный атрибут, который сопоставляется со столбцом loginв базе данных. Затем мы определяем проверки для этого нового атрибута.
Метод 3: использование alias_attribute
class User < ApplicationRecord
alias_attribute :login, :username
validates_presence_of :login
validates_uniqueness_of :login, on: :create
end
Объяснение: Метод alias_attributeпозволяет нам создать псевдоним для атрибута username, сопоставляя его со столбцом login. Таким образом, проверки будут применены к столбцу login, сохраняя при этом атрибут usernameв коде.
Метод 4. Пользовательский метод проверки
class User < ApplicationRecord
validate :custom_login_validation
def custom_login_validation
errors.add(:login, "can't be blank") if login.blank?
errors.add(:login, "has already been taken") if User.exists?(login: login)
end
end
Объяснение: В этом методе мы определяем собственный метод проверки custom_login_validation, который проверяет достоверность атрибута login. Мы вручную добавляем сообщения об ошибках в атрибут login, используя метод errors.add.
В этой статье мы рассмотрели несколько методов настройки имен столбцов при проверке модели Rails. Предпочитаете ли вы использовать такие параметры, как :column, переопределять методы атрибутов или создавать псевдонимы, Rails предоставляет гибкость для адаптации к вашим конкретным требованиям. Используя эти методы, вы можете обеспечить целостность данных при использовании пользовательских имен столбцов при проверке.