Sha256: 742be542da925b94e7ac76bf05276e26d9cbd5034184869bc04c2fdd3ccef3a2

Contents?: true

Size: 1.42 KB

Versions: 3

Compression:

Stored size: 1.42 KB

Contents

require 'action_view/helpers/auto_tag_helper/form_info'
require 'activerecord/mlang'
class OrgMember < ActiveRecord::Base
  belongs_to :org
  belongs_to :lang
  belongs_to :org_director_type
  belongs_to :org_member_type

  include ActiveRecord::Mlang
  include ActionView::Helpers::AutoTagHelper::FormInfo
  set_accessible_attrs :lang_id, :org_director_type_id, :org_member_type_id, :handle_name, :byear, :bmonth, :bday, :entried_on, :sex, :expire_at, :retired_on
  set_input_options :byear, min: Time.now.year - 120, max: Time.now.year
  set_input_options :bmonth, min: 1, max: 12
  set_input_options :bday, min: 1, max: 31
  set_input_options :sex, min: -1, max: 1

  def others
    self.class.where(org_id: self.org_id).where.not(id: self.id)
  end

  before_save do
    if changed_attributes[:org_director_type_id]
      limit = OrgDirectorType.select(:limit).where(id: self.org_director_type_id).first.limit
      if limit < 1 || others.where(org_director_type_id: self.org_director_type_id).count < limit
        # no problem
      else
        raise WeBridge::Exceptions::ForbiddenError
      end
    end
  end

  def <=>(other)
    [:director_type, :member_type, :entried_on, :created_at].inspect(nil){|rtn,m| rtn || (self.try(m) <=> other.try(m)).to_i.nonzero? }
  end

  def __display__
    self.handle_name.presence || self.real_name.presence ||  self.id.to_s
  end

  def real_name
    self.text(self.lang_id).try(:name).to_s
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
we_bridge_rails_engine_orgs-0.1.3 app/models/org_member.rb
we_bridge_rails_engine_orgs-0.1.2 app/models/org_member.rb
we_bridge_rails_engine_orgs-0.1.1 app/models/org_member.rb