app/models/cadenero/v1/account.rb in cadenero-0.0.2.a3 vs app/models/cadenero/v1/account.rb in cadenero-0.0.2.b1
- old
+ new
@@ -1,17 +1,18 @@
module Cadenero::V1
+ # Defines a subdomain with a default admin (owner) as a tenant in the Rails App
class Account < ActiveRecord::Base
belongs_to :owner, :class_name => "Cadenero::User"
has_many :members, :class_name => "Cadenero::Member"
has_many :users, :through => :members, :class_name => "Cadenero::User"
accepts_nested_attributes_for :owner
attr_accessible :name, :subdomain, :owner_attributes, :owner
validates :subdomain, :presence => true, :uniqueness => true
validates :owner, :presence => true
- # Creates an accout and assign the provided [Cadenero::User] as owner to the account
+ # Creates an account and assign the provided [Cadenero::User] as owner to the account
# @param [Hash] params list
# @example
# Example for the params JSON: {name: "Testy", subdomain: "test",
# owner_attributes: {email: "testy@example.com", password: "changeme",
# password_confirmation: "changeme"} }
@@ -21,9 +22,23 @@
account = new(params)
if account.save
account.users << account.owner
end
account
+ end
+
+ # Gets the account for the specified subdomain and guards errors
+ # @param [String] params subdomain
+ # @example
+ # get_by_subdomain("www")
+ # @return the [Cadenero::V1::Account] for that subdomain
+ def self.get_by_subdomain(subdomain)
+ account = find_by_subdomain(subdomain)
+ if account
+ account
+ else
+ raise Apartment::SchemaNotFound, "Subdomain is not valid"
+ end
end
# Create a database schema using the subdomain
def create_schema
Apartment::Database.create(subdomain)