Skip to content

Instantly share code, notes, and snippets.

@joshrendek
Created December 24, 2010 20:55
Show Gist options
  • Save joshrendek/754505 to your computer and use it in GitHub Desktop.
Save joshrendek/754505 to your computer and use it in GitHub Desktop.
<%= form_for([@ticketable, @ticket]) do |f| %>
resources :user do
resources :tickets
end
class Ticket < ActiveRecord::Base
belongs_to :ticketable, :polymorphic => true
end
class TicketsController < ApplicationController
before_filter :get_object, :only => [:create, :new]
def create
@ticket = Ticket.new(params[:ticket])
@ticket.ticketable = @ticketable
respond_to do |format|
if @ticket.save
format.html { redirect_to(@ticket, :notice => 'Ticket was successfully created.') }
format.xml { render :xml => @ticket, :status => :created, :location => @ticket }
else
format.html { render :action => "new" }
format.xml { render :xml => @ticket.errors, :status => :unprocessable_entity }
end
end
end
#...other controller code
private
def get_object
type = ''
if params[:user_id]; type = 'user'
elsif params[:g_server_id]; type = 'g_server'
end
value = type.classify.constantize.find_by_identifier(params[:"#{type}_id"])
instance_variable_set("@ticketable" , value)
end
end
# part of the user model
class User < ActiveRecord::Base
has_many :tickets, :as => :ticketable
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment