Adds dependent restricted association to some models

fix #348
This commit is contained in:
chrisbr 2014-12-18 13:38:40 +01:00
parent 87b1aba1e9
commit 799fd0c3a4
19 changed files with 65 additions and 66 deletions

View file

@ -12,11 +12,11 @@ module Admin
@campaign.attributes = params[:campaign] @campaign.attributes = params[:campaign]
if @conference.save if @conference.save
redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title), flash[:notice] = 'Campaign successfully created.'
notice: 'Campaign successfully created.') redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title))
else else
flash[:error] = 'Campaign creation failed. ' + @campaign.errors.full_messages.to_sentence flash[:error] = 'Campaign creation failed. ' + @campaign.errors.full_messages.to_sentence
render action: 'new' render action: 'new'
end end
end end
@ -26,23 +26,22 @@ module Admin
def update def update
if @campaign.update_attributes(params[:campaign]) if @campaign.update_attributes(params[:campaign])
redirect_to(admin_conference_campaigns_path( flash[:notice] = "Campaign '#{@campaign.name}' successfully updated."
conference_id: @conference.short_title), redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title))
notice: "Campaign '#{@campaign.name}' successfully updated.")
else else
flash[:error] = 'Campaign update failed. ' + @campaign.errors.full_messages.to_sentence flash[:error] = "Campaign update failed. #{@campaign.errors.full_messages.to_sentence}"
render action: 'edit' render action: 'edit'
end end
end end
def destroy def destroy
if @campaign.destroy if @campaign.destroy
redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title), flash[:notice] = "Campaign '#{@campaign.name}' successfully deleted."
notice: "Campaign '#{@campaign.name}' successfully deleted.") redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title))
else else
redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title), flash[:error] = "Delete of Campaign for #{@conference.short_title} failed." \
alert: "Delete of Campaign for #{@conference.short_title} failed." \ "#{@campaign.errors.full_messages.join('. ')}."
"#{@campaign.errors.full_messages.join('. ')}.") redirect_to(admin_conference_campaigns_path(conference_id: @conference.short_title))
end end
end end
end end

View file

@ -16,8 +16,8 @@ module Admin
def create def create
@difficulty_level = @conference.difficulty_levels.new(difficulty_level_params) @difficulty_level = @conference.difficulty_levels.new(difficulty_level_params)
if @difficulty_level.save if @difficulty_level.save
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title), flash[:notice] = 'Difficulty level successfully created.'
notice: 'Difficulty level successfully created.') redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
else else
flash[:error] = "Creating difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}." flash[:error] = "Creating difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}."
render :new render :new
@ -26,9 +26,8 @@ module Admin
def update def update
if @difficulty_level.update_attributes(difficulty_level_params) if @difficulty_level.update_attributes(difficulty_level_params)
redirect_to(admin_conference_difficulty_levels_path( flash[:notice] = 'Difficulty level successfully updated.'
conference_id: @conference.short_title), redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
notice: 'Difficulty level successfully updated.')
else else
flash[:error] = "Update difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}." flash[:error] = "Update difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}."
render :edit render :edit
@ -37,12 +36,12 @@ module Admin
def destroy def destroy
if @difficulty_level.destroy if @difficulty_level.destroy
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title), flash[:notice] = 'Difficulty level successfully deleted.'
notice: 'Difficulty level successfully deleted.') redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
else else
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title), flash[:error] = 'Deleting difficulty level type failed! ' \
error: 'Deleting difficulty level type failed! ' \ "#{@difficulty_level.errors.full_messages.join('. ')}."
"#{@difficulty_level.errors.full_messages.join('. ')}.") redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
end end
end end

View file

@ -16,8 +16,8 @@ module Admin
def create def create
@event_type = @conference.event_types.new(event_type_params) @event_type = @conference.event_types.new(event_type_params)
if @event_type.save if @event_type.save
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title), flash[:notice] = 'Event type successfully created.'
notice: 'Event type successfully created.') redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
else else
flash[:error] = "Creating event type failed: #{@event_type.errors.full_messages.join('. ')}." flash[:error] = "Creating event type failed: #{@event_type.errors.full_messages.join('. ')}."
render :new render :new
@ -26,9 +26,8 @@ module Admin
def update def update
if @event_type.update_attributes(event_type_params) if @event_type.update_attributes(event_type_params)
redirect_to(admin_conference_event_types_path( flash[:notice] = 'Event type successfully updated.'
conference_id: @conference.short_title), redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
notice: 'Event type successfully updated.')
else else
flash[:error] = "Update event type failed: #{@event_type.errors.full_messages.join('. ')}." flash[:error] = "Update event type failed: #{@event_type.errors.full_messages.join('. ')}."
render :edit render :edit
@ -37,12 +36,12 @@ module Admin
def destroy def destroy
if @event_type.destroy if @event_type.destroy
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title), flash[:notice] = 'Event type successfully deleted.'
notice: 'Event type successfully deleted.') redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
else else
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title), flash[:error] = 'Destroying event type failed! ' \
error: 'Destroying event type failed! ' \ "#{@event_type.errors.full_messages.join('. ')}."
"#{@event_type.errors.full_messages.join('. ')}.") redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
end end
end end

View file

@ -16,8 +16,8 @@ module Admin
def create def create
@room = @conference.rooms.new(room_params) @room = @conference.rooms.new(room_params)
if @room.save if @room.save
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title), flash[:notice] = 'Room successfully created.'
notice: 'Room successfully created.') redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
else else
flash[:error] = "Creating Room failed: #{@room.errors.full_messages.join('. ')}." flash[:error] = "Creating Room failed: #{@room.errors.full_messages.join('. ')}."
render :new render :new
@ -26,9 +26,8 @@ module Admin
def update def update
if @room.update_attributes(room_params) if @room.update_attributes(room_params)
redirect_to(admin_conference_rooms_path( flash[:notice] = 'Room successfully updated.'
conference_id: @conference.short_title), redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
notice: 'Room successfully updated.')
else else
flash[:error] = "Update Room failed: #{@room.errors.full_messages.join('. ')}." flash[:error] = "Update Room failed: #{@room.errors.full_messages.join('. ')}."
render :edit render :edit
@ -37,12 +36,11 @@ module Admin
def destroy def destroy
if @room.destroy if @room.destroy
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title), flash[:notice] = 'Room successfully deleted.'
notice: 'Room successfully deleted.') redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
else else
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title), flash[:error] = "Destroying room failed! #{@room.errors.full_messages.join('. ')}."
error: 'Destroying room failed! ' \ redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
"#{@room.errors.full_messages.join('. ')}.")
end end
end end

View file

@ -19,8 +19,8 @@ module Admin
def create def create
@track = @conference.tracks.new(track_params) @track = @conference.tracks.new(track_params)
if @track.save if @track.save
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title), flash[:notice] = 'Track successfully created.'
notice: 'Track successfully created.') redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
else else
flash[:error] = "Creating Track failed: #{@track.errors.full_messages.join('. ')}." flash[:error] = "Creating Track failed: #{@track.errors.full_messages.join('. ')}."
render :new render :new
@ -31,8 +31,8 @@ module Admin
def update def update
if @track.update_attributes(track_params) if @track.update_attributes(track_params)
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title), flash[:notice] = 'Track successfully updated.'
notice: 'Track successfully updated.') redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
else else
flash[:error] = "Track update failed: #{@track.errors.full_messages.join('. ')}." flash[:error] = "Track update failed: #{@track.errors.full_messages.join('. ')}."
render :edit render :edit
@ -41,12 +41,11 @@ module Admin
def destroy def destroy
if @track.destroy if @track.destroy
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title), flash[:notice] = 'Track successfully deleted.'
notice: 'Track successfully deleted.') redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
else else
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title), flash[:error] = "Track couldn't be deleted. #{@track.errors.full_messages.join('. ')}."
error: 'Track couldn\'t be deleted.' \ redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
"#{@track.errors.full_messages.join('. ')}.")
end end
end end

View file

@ -4,7 +4,7 @@ class Campaign < ActiveRecord::Base
validates :name, :utm_campaign, presence: true validates :name, :utm_campaign, presence: true
has_many :targets has_many :targets, dependent: :nullify
belongs_to :conference belongs_to :conference
## ##

View file

@ -31,7 +31,7 @@ class Conference < ActiveRecord::Base
has_one :call_for_paper, dependent: :destroy has_one :call_for_paper, dependent: :destroy
has_one :venue, dependent: :destroy has_one :venue, dependent: :destroy
has_many :social_events, dependent: :destroy has_many :social_events, dependent: :destroy
has_many :ticket_purchases has_many :ticket_purchases, dependent: :destroy
has_many :supporters, through: :ticket_purchases, source: :user has_many :supporters, through: :ticket_purchases, source: :user
has_many :tickets, dependent: :destroy has_many :tickets, dependent: :destroy
has_many :dietary_choices, dependent: :destroy has_many :dietary_choices, dependent: :destroy

View file

@ -2,7 +2,7 @@ class DifficultyLevel < ActiveRecord::Base
attr_accessible :title, :description, :color, :conference_id attr_accessible :title, :description, :color, :conference_id
belongs_to :conference belongs_to :conference
has_many :events has_many :events, dependent: :nullify
validates :title, presence: true validates :title, presence: true
end end

View file

@ -29,7 +29,7 @@ class Event < ActiveRecord::Base
before_create :generate_guid before_create :generate_guid
validate :abstract_limit validate :abstract_limit
validate :before_end_of_conference validate :before_end_of_conference, on: :create
validate :name_and_biography_exists validate :name_and_biography_exists
validates :title, presence: true validates :title, presence: true
validates :abstract, presence: true validates :abstract, presence: true

View file

@ -3,6 +3,7 @@ class EventType < ActiveRecord::Base
:conference_id :conference_id
belongs_to :conference belongs_to :conference
has_many :events, dependent: :restrict_with_error
validates :title, presence: true validates :title, presence: true
validates :length, numericality: {greater_than: 0} validates :length, numericality: {greater_than: 0}

View file

@ -2,7 +2,7 @@ class Room < ActiveRecord::Base
attr_accessible :name, :size, :conference_id attr_accessible :name, :size, :conference_id
belongs_to :conference belongs_to :conference
has_many :events has_many :events, dependent: :nullify
before_create :generate_guid before_create :generate_guid

View file

@ -1,6 +1,6 @@
class Ticket < ActiveRecord::Base class Ticket < ActiveRecord::Base
belongs_to :conference belongs_to :conference
has_many :ticket_purchases has_many :ticket_purchases, dependent: :destroy
has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user
attr_accessible :conference, :title, :url, :description, :conference_id, :price_cents, :price_currency, :price attr_accessible :conference, :title, :url, :description, :conference_id, :price_cents, :price_currency, :price

View file

@ -1,7 +1,7 @@
class Track < ActiveRecord::Base class Track < ActiveRecord::Base
attr_accessible :name, :description, :color, :conference_id attr_accessible :name, :description, :color, :conference_id
belongs_to :conference belongs_to :conference
has_many :events has_many :events, dependent: :nullify
before_create :generate_guid before_create :generate_guid
validates :name, presence: true validates :name, presence: true

View file

@ -38,7 +38,7 @@ class User < ActiveRecord::Base
has_many :event_users, dependent: :destroy has_many :event_users, dependent: :destroy
has_many :events, -> { uniq }, through: :event_users has_many :events, -> { uniq }, through: :event_users
has_many :registrations, dependent: :destroy has_many :registrations, dependent: :destroy
has_many :ticket_purchases has_many :ticket_purchases, dependent: :destroy
has_many :tickets, through: :ticket_purchases, source: :ticket has_many :tickets, through: :ticket_purchases, source: :ticket
has_many :votes, dependent: :destroy has_many :votes, dependent: :destroy
has_many :voted_events, through: :votes, source: :events has_many :voted_events, through: :votes, source: :events

View file

@ -19,6 +19,6 @@
= f.input :utm_term, label: 'Term', hint: 'Campaign keywords. E.g. marketing+conference+opensource' = f.input :utm_term, label: 'Term', hint: 'Campaign keywords. E.g. marketing+conference+opensource'
= f.input :utm_content, label: 'Content', hint: 'Used to track the different types of content that point to the same URL (A/B Test).' = f.input :utm_content, label: 'Content', hint: 'Used to track the different types of content that point to the same URL (A/B Test).'
= f.inputs name: 'Targets' do = f.inputs name: 'Targets' do
= f.input :targets = f.input :targets, collection: @conference.targets
%p.text-right %p.text-right
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' } = f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }

View file

@ -27,7 +27,8 @@
= link_to 'Edit', edit_admin_conference_difficulty_level_path(@conference.short_title, difficulty_level.id), = link_to 'Edit', edit_admin_conference_difficulty_level_path(@conference.short_title, difficulty_level.id),
method: :get, class: 'btn btn-primary' method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_difficulty_level_path(@conference.short_title, difficulty_level.id), = link_to 'Delete', admin_conference_difficulty_level_path(@conference.short_title, difficulty_level.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete #{difficulty_level.title}?" } method: :delete, class: 'btn btn-danger',
data: { confirm: "Do you really want to delete #{difficulty_level.title}? Attention: This difficulty level will be removed from all Events that have it set" }
.row .row
.col-md-12.text-right .col-md-12.text-right
= link_to 'Add Difficulty Level', new_admin_conference_difficulty_level_path(@conference.short_title), class: 'btn btn-primary' = link_to 'Add Difficulty Level', new_admin_conference_difficulty_level_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -24,7 +24,8 @@
= link_to 'Edit', edit_admin_conference_room_path(@conference.short_title, room.id), = link_to 'Edit', edit_admin_conference_room_path(@conference.short_title, room.id),
method: :get, class: 'btn btn-primary' method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_room_path(@conference.short_title, room.id), = link_to 'Delete', admin_conference_room_path(@conference.short_title, room.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete #{room.name}?" } method: :delete, class: 'btn btn-danger',
data: { confirm: "Do you really want to delete #{room.name}? Attention: This room will be removed from all Events that have it set"}
.row .row
.col-md-12.text-right .col-md-12.text-right
= link_to 'Add Room', new_admin_conference_room_path(@conference.short_title), class: 'btn btn-primary' = link_to 'Add Room', new_admin_conference_room_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -31,7 +31,8 @@
= link_to 'Edit', edit_admin_conference_ticket_path(@conference.short_title, ticket.id), = link_to 'Edit', edit_admin_conference_ticket_path(@conference.short_title, ticket.id),
method: :get, class: 'btn btn-primary' method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_ticket_path(@conference.short_title, ticket.id), = link_to 'Delete', admin_conference_ticket_path(@conference.short_title, ticket.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete the Ticket for #{ticket.title}?" } method: :delete, class: 'btn btn-danger',
data: { confirm: "Do you really want to delete the Ticket for #{ticket.title}? Attention: All ticket purchases will be also deleted!" }
.row .row
.col-md-12 .col-md-12
= link_to 'Add Ticket', new_admin_conference_ticket_path, class: 'btn btn-success pull-right' = link_to 'Add Ticket', new_admin_conference_ticket_path, class: 'btn btn-success pull-right'

View file

@ -29,7 +29,8 @@
= link_to 'Edit', edit_admin_conference_track_path(@conference.short_title, track.id), = link_to 'Edit', edit_admin_conference_track_path(@conference.short_title, track.id),
method: :get, class: 'btn btn-primary' method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_track_path(@conference.short_title, track.id), = link_to 'Delete', admin_conference_track_path(@conference.short_title, track.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete #{track.name}?" } method: :delete, class: 'btn btn-danger',
data: { confirm: "Do you really want to delete #{track.name}? Attention: This track will be removed from all Events that have it set" }
.row .row
.col-md-12.text-right .col-md-12.text-right
= link_to 'New Track', new_admin_conference_track_path(@conference.short_title), class: 'btn btn-success' = link_to 'New Track', new_admin_conference_track_path(@conference.short_title), class: 'btn btn-success'