add Match model
This commit is contained in:
@@ -2,6 +2,8 @@ class User < ApplicationRecord
|
||||
has_secure_password validations: false
|
||||
|
||||
has_many :sessions, dependent: :destroy
|
||||
has_many :matches_as_player1, class_name: "Match", foreign_key: :player1_id, dependent: :restrict_with_exception, inverse_of: :player1
|
||||
has_many :matches_as_player2, class_name: "Match", foreign_key: :player2_id, dependent: :restrict_with_exception, inverse_of: :player2
|
||||
has_one_attached :avatar
|
||||
|
||||
normalizes :nickname, with: ->(n) { n.strip }
|
||||
@@ -11,6 +13,13 @@ class User < ApplicationRecord
|
||||
validates :password, presence: true, length: { minimum: 6 }, if: -> { new_record? || password_digest_changed? }
|
||||
validate :avatar_content_type, if: -> { avatar.attached? }
|
||||
|
||||
# All matches of this user that have finished, newest first.
|
||||
def finished_matches
|
||||
Match.where("player1_id = :id OR player2_id = :id", id: id)
|
||||
.where.not(finished_at: nil)
|
||||
.order(finished_at: :desc)
|
||||
end
|
||||
|
||||
private
|
||||
def avatar_content_type
|
||||
unless avatar.blob.content_type.in?(%w[image/png image/jpeg image/gif image/webp])
|
||||
|
||||
Reference in New Issue
Block a user