Sha256: 278a32a709e3cfb9e9a6638df3e8ee97c558b7e8f292db887d35d10c0eef4483

Contents?: true

Size: 1.32 KB

Versions: 3

Compression:

Stored size: 1.32 KB

Contents

module NippoCore
  class User < ApplicationRecord
    # Include default devise modules. Others available are:
    # :confirmable, :lockable, :timeoutable and :omniauthable
    devise :database_authenticatable, :registerable,
           :recoverable, :rememberable, :trackable, :validatable

    has_many :created_groups, class_name: 'NippoCore::Group', foreign_key: 'creator_id', dependent: :destroy
    has_many :reports, dependent: :destroy
    has_many :groups, through: :group_member_relations
    has_many :group_member_relations, dependent: :destroy

    validates :last_name, presence: true
    validates :first_name, presence: true
    validates :nickname, presence: true

    def send_request(group)
      relation = group_member_relations.find_or_initialize_by(group: group)
      relation.save
    end

    # TODO: had better check!
    def add_member(user, group)
      relation = group.group_member_relations.find_or_initialize_by(user: user, accepted_at: nil)
      relation.accepted_at = Time.now
      relation.accepter = self
      relation.save
    end

    def accept_request(request)
      return unless request.group.member?(self)
      request.accepted_at = Time.now
      request.accepter = self
      request.save
    end

    def request_to?(group)
      group_member_relations.exists?(group_id: group.id)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nippo_core-1.0.1 app/models/nippo_core/user.rb
nippo_core-1.0.0 app/models/nippo_core/user.rb
nippo_core-0.3.0 app/models/nippo_core/user.rb