aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/subscription.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/subscription.rb')
-rw-r--r--app/models/subscription.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/models/subscription.rb b/app/models/subscription.rb
new file mode 100644
index 000000000..8b2b025de
--- /dev/null
+++ b/app/models/subscription.rb
@@ -0,0 +1,43 @@
+class Subscription
+ include ActiveModel::Validations
+ include ActiveModel::Conversion
+ extend ActiveModel::Naming
+
+ attr_accessor :organisation_name, :user_name, :email, :password, :password_confirmation
+
+ def initialize(attributes = {})
+ attributes.each do |name, value|
+ send("#{name}=", value)
+ end
+ end
+
+ def persisted?
+ false
+ end
+
+ def user
+ @user ||= organisation.users.build :email => email, :password => password, :password_confirmation => password_confirmation
+ end
+
+ def organisation
+ @organisation ||= Organisation.new :name => organisation_name
+ end
+
+ def valid?
+ unless organisation.valid?
+ self.errors.add( :organisation_name, organisation.errors[:name]) if organisation.errors[:name]
+ end
+ unless user.valid?
+ self.errors.add( :password, user.errors[:password]) if user.errors[:password]
+ self.errors.add( :email, user.errors[:email]) if user.errors[:email]
+ end
+ self.errors.empty?
+ end
+
+ def save
+ if valid?
+ organisation.save and user.save
+ end
+ end
+
+end