diff options
Diffstat (limited to 'app/models/subscription.rb')
| -rw-r--r-- | app/models/subscription.rb | 43 |
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 |
