Files
ch420/app/models/supporter.rb
T

71 lines
2.2 KiB
Ruby
Raw Normal View History

2015-10-02 21:19:00 +02:00
class Supporter
include Mongoid::Document
2017-04-13 17:16:03 +02:00
include Mongoid::Timestamps
include Mongoid::Paranoia
include Geocoder::Model::Mongoid
COUNTER_START = 10_003
2017-03-28 01:14:45 +02:00
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
## Database authenticatable
2017-03-31 14:42:37 +02:00
field :email, type: String, default: ''
field :encrypted_password, type: String, default: ''
2017-04-14 11:34:01 +02:00
field :admin, type: Boolean, default: false
2017-03-28 01:14:45 +02:00
## Recoverable
field :reset_password_token, type: String
field :reset_password_sent_at, type: Time
## Rememberable
field :remember_created_at, type: Time
## Trackable
field :sign_in_count, type: Integer, default: 0
field :current_sign_in_at, type: Time
field :last_sign_in_at, type: Time
field :current_sign_in_ip, type: String
field :last_sign_in_ip, type: String
2015-10-06 13:07:01 +02:00
geocoded_by :address
after_validation :geocode # auto-fetch coordinates
2015-10-02 21:34:31 +02:00
2016-03-29 22:08:52 +02:00
field :first_name, type: String
field :last_name, type: String
field :street, type: String
field :zip, type: Integer
field :city, type: String
field :support, type: String # Indicates the type of support
2016-03-29 22:03:06 +02:00
field :li_membership, type: Boolean, default: false
2016-03-29 22:08:52 +02:00
field :age_category, type: String
field :coordinates, type: Array
field :comments, type: String
field :language, type: String
field :unsubscribed, type: Boolean, default: false
2016-04-22 11:10:40 +02:00
field :duplicate, type: Boolean, default: false
2015-10-02 21:34:31 +02:00
2015-10-06 09:30:35 +02:00
validates :first_name, presence: true
validates :last_name, presence: true
validates :street, presence: true
validates :zip, presence: true
validates :city, presence: true
2015-10-07 14:27:50 +02:00
validates :email, presence: true, uniqueness: true, format: /.+@.+\..+/i
2015-10-03 06:38:11 +02:00
validates :support, presence: true
validates :age_category, presence: true
2015-11-09 10:33:26 +01:00
validates :language, presence: true
2015-10-06 13:07:01 +02:00
2017-04-13 17:16:03 +02:00
embeds_one :publicity
2015-10-19 08:25:26 +02:00
def self.counter
actual = count.to_i
actual > COUNTER_START ? actual : COUNTER_START
end
2015-10-06 13:07:01 +02:00
def address
"#{street}, #{zip}, #{city}, Switzerland"
end
2015-10-02 21:19:00 +02:00
end