diff options
| author | Marc Florisson | 2012-08-29 18:47:22 +0200 |
|---|---|---|
| committer | Marc Florisson | 2012-08-29 18:47:22 +0200 |
| commit | 61d0662dd923169c5c5aa1d4624f04d6e9dbe43d (patch) | |
| tree | 19e5943eb061cf1bb09709cb236fa10007064e32 /app/models/subscription.rb | |
| parent | 6fd69ca92e3090a2a8b7b73e7511bc1070290e22 (diff) | |
| download | chouette-core-61d0662dd923169c5c5aa1d4624f04d6e9dbe43d.tar.bz2 | |
add subscription
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 |
