Skip to content
This repository has been archived by the owner on May 18, 2021. It is now read-only.

Commit

Permalink
add STI user models/refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
PanfilovDenis committed Feb 1, 2013
1 parent 02723de commit f7ea27b
Show file tree
Hide file tree
Showing 61 changed files with 722 additions and 292 deletions.
22 changes: 0 additions & 22 deletions app/controllers/web/account/accounts_controller.rb

This file was deleted.

19 changes: 19 additions & 0 deletions app/controllers/web/account/members_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class Web::Account::MembersController < Web::Account::ApplicationController

def edit
@member = MemberEditType.find params[:id]
end

def update
@member = MemberEditType.find params[:id]

if @member.update_attributes params[:member]
flash_success
redirect_to root_path
else
flash_error
render action: "edit"
end
end

end
19 changes: 19 additions & 0 deletions app/controllers/web/account/speakers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class Web::Account::SpeakersController < Web::Account::ApplicationController

def edit
@speaker = SpeakerEditType.find params[:id]
end

def update
@speaker = SpeakerEditType.find params[:id]

if @speaker.update_attributes params[:speaker]
flash_success
redirect_to root_path
else
flash_error
render action: "edit"
end
end

end
43 changes: 43 additions & 0 deletions app/controllers/web/admin/members_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
class Web::Admin::MembersController < Web::Admin::ApplicationController

def new
@member = Member.new
end

def create
@member = MemberEditType.new(params[:member])
if @member.save
flash_success
redirect_to admin_users_path
else
flash_error
render "new"
end
end

def show
@member = Member.find params[:id]
end

def edit
@member = User.find params[:id]
end

def update
@member = User.find(params[:id])
#TODO херовое решение, вынести или реализовать другой вариант
@member.type = :Member
@member.save

@member = @member.becomes(MemberEditType)

if @member.update_attributes params[:member]
flash_success
redirect_to admin_users_path
else
flash_error
render "edit"
end
end

end
43 changes: 43 additions & 0 deletions app/controllers/web/admin/speakers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
class Web::Admin::SpeakersController < Web::Admin::ApplicationController

def new
@speaker = Speaker.new
end

def create
@speaker = SpeakerEditType.new(params[:speaker])
if @speaker.save
flash_success
redirect_to admin_users_path
else
flash_error
render "new"
end
end

def show
@speaker = Speaker.find params[:id]
end

def edit
@speaker = User.find params[:id]
end

def update
@speaker = User.find(params[:id])
#TODO херовое решение, вынести или реализовать другой вариант
@speaker.type = :Speaker
@speaker.save

@speaker = @speaker.becomes(SpeakerEditType)

if @speaker.update_attributes params[:speaker]
flash_success
redirect_to admin_users_path
else
flash_error
render "edit"
end
end

end
36 changes: 2 additions & 34 deletions app/controllers/web/admin/users_controller.rb
Original file line number Diff line number Diff line change
@@ -1,45 +1,13 @@
class Web::Admin::UsersController < Web::Admin::ApplicationController
def new
@user = User.new
end

def create
@user = UserEditType.create params[:user]
if @user.save
flash_success
redirect_to admin_user_path(@user)
else
flash_error
render "new"
end
end

def show
@user = User.find params[:id]
end


def index
@users = User.web
end

def edit
@user = User.find params[:id]
end

def update
@user = UserEditType.find params[:id]
if @user.update_attributes params[:user]
flash_success
redirect_to admin_user_path(@user)
else
flash_error
render "new"
end
end

def destroy
@user = User.find params[:id]
@user.delete
redirect_to admin_users_path
end

end
23 changes: 23 additions & 0 deletions app/controllers/web/members_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Web::MembersController < Web::ApplicationController

def index
@members = Member.shown_as_participants
end

def new
@member = MemberEditType.new
end

def create
@member = MemberEditType.new(params[:member])

if @member.save
flash_success
redirect_to root_path
else
flash_error
render action: "new"
end
end

end
10 changes: 3 additions & 7 deletions app/controllers/web/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@

class Web::SessionsController < Web::ApplicationController

def new
@user = UserEditType.new
@user = User.new
end

def create
user = UserEditType.find_by_email(params[:user][:email])

if user.try(:authenticate, params[:user][:password])
user = User.find_by_email(params[:user][:email])
if user.try(:authenticate, params[:user][:password])
flash_success

sign_in(user)
redirect_to root_path
else
flash_error

render action: 'new'
end
end
Expand Down
26 changes: 0 additions & 26 deletions app/controllers/web/users_controller.rb

This file was deleted.

11 changes: 11 additions & 0 deletions app/inputs/image_preview_input.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class ImagePreviewInput < SimpleForm::Inputs::FileInput
def input
style = options.delete(:preview_style)
out = super
if object.persisted? && object.send("#{attribute_name}?")
out << template.content_tag(:div, template.content_tag(:span, "Current photo:"))
out << template.content_tag(:div, template.image_tag(object.send(:"#{attribute_name}_url", style)) )
end
out
end
end
12 changes: 12 additions & 0 deletions app/models/member.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Member < User
include MemberRepository

def member?
true
end

def speaker?
false
end

end
14 changes: 14 additions & 0 deletions app/models/speaker.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Speaker < User
include SpeakerRepository

mount_uploader :photo, UsersPhotoUploader

def member?
false
end

def speaker?
true
end

end
17 changes: 15 additions & 2 deletions app/models/user.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@

class User < ActiveRecord::Base
include UserRepository

has_secure_password

attr_accessible :email, :password, :password_digest,
:name, :city,
:company, :position,
:show_as_participant
:show_as_participant, :photo, :type, :state_event

state_machine :state, initial: :active do
state :active
Expand All @@ -23,4 +24,16 @@ class User < ActiveRecord::Base
def full_name
name
end

def to_s
name
end

def member?
false
end

def speaker?
false
end
end
9 changes: 9 additions & 0 deletions app/repositories/member_repository.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module MemberRepository
extend ActiveSupport::Concern

include UsefullScopes

included do
scope :web, -> { by_created_at }
end
end
9 changes: 9 additions & 0 deletions app/repositories/speaker_repository.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module SpeakerRepository
extend ActiveSupport::Concern

include UsefullScopes

included do
scope :web, -> { by_created_at }
end
end
5 changes: 2 additions & 3 deletions app/repositories/user_repository.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

module UserRepository
extend ActiveSupport::Concern

include UsefullScopes

included do
scope :web, ->{by_email}
scope :web, -> { by_created_at }

scope :shown_as_participants, ->{
scope :shown_as_participants, -> {
where show_as_participant: true
}
scope :active, where(state: :active)
Expand Down
Loading

0 comments on commit f7ea27b

Please sign in to comment.