Added customer composite key
This commit is contained in:
@@ -1,7 +1,40 @@
|
||||
class Customer < ApplicationRecord
|
||||
# Use Rails 7.1's native composite primary key
|
||||
self.primary_key = %i[first_name surname original_phone]
|
||||
|
||||
belongs_to :company
|
||||
|
||||
validates :name, presence: true, uniqueness: { scope: :company_id }
|
||||
validates :first_name, presence: true
|
||||
validates :surname, presence: true
|
||||
validates :phone, presence: true
|
||||
validates :original_phone, presence: true
|
||||
validates :company_id, presence: true
|
||||
|
||||
validates :first_name, uniqueness: {
|
||||
scope: %i[surname original_phone company_id],
|
||||
message: -> { I18n.t('customers.customer.already_exists') }
|
||||
}
|
||||
|
||||
validates :birthyear, numericality: {
|
||||
only_integer: true,
|
||||
greater_than: 1900,
|
||||
less_than_or_equal_to: -> { Time.current.year }
|
||||
}, allow_nil: true
|
||||
|
||||
before_validation :set_original_phone, on: :create
|
||||
|
||||
def full_name
|
||||
[first_name, surname].compact_blank.join(' ')
|
||||
end
|
||||
|
||||
# Add method for URL generation
|
||||
def to_param
|
||||
[first_name, surname, original_phone].join('_')
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_original_phone
|
||||
self.original_phone = phone if original_phone.blank?
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user