36 lines
712 B
Ruby
36 lines
712 B
Ruby
|
class Membership
|
||
|
include Mongoid::Document
|
||
|
include Mongoid::Timestamps
|
||
|
|
||
|
## fields ##
|
||
|
field :admin, :type => Boolean, :default => false
|
||
|
|
||
|
## associations ##
|
||
|
belongs_to_related :account
|
||
|
embedded_in :site, :inverse_of => :memberships
|
||
|
|
||
|
## validations ##
|
||
|
validates_presence_of :account
|
||
|
|
||
|
## methods ##
|
||
|
|
||
|
def email; @email; end
|
||
|
|
||
|
def email=(email)
|
||
|
@email = email
|
||
|
self.account = Account.where(:email => email).first
|
||
|
end
|
||
|
|
||
|
def action_to_take
|
||
|
if @email.blank?
|
||
|
:error
|
||
|
elsif self.account.nil?
|
||
|
:create_account
|
||
|
elsif self.site.memberships.find_all { |m| m.account_id == self.account_id }.size > 1
|
||
|
:nothing
|
||
|
else
|
||
|
:save_it
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|