====== Schema ====== create_table "logs", :force => true do |t| t.date "date" t.text "description" t.string "title" t.string "summary" t.integer "car_id" t.datetime "created_at" t.datetime "updated_at" t.integer "maintenance_id" t.integer "mileage" t.string "rtype" t.string "oil_brand" t.string "oil_type" t.string "oil_filter_type" end ====== Models ====== class Log < ActiveRecord::Base belongs_to :car has_and_belongs_to_many :tags set_inheritance_column :rtype def self.types v = Array.new() v.push(nil) v.push("OilChange") v.push("BrakePads") v.push("TimingBelt") return v end end class Car < ActiveRecord::Base has_many :logs end class OilChange < Log end =========== Controllers =========== # POST /logs # POST /logs.xml def create @log = Log.new(params[:log]) @log.rtype = params[:log][:rtype] respond_to do |format| if @log.save flash[:notice] = 'Log was successfully created.' format.html { redirect_to(@log) } format.xml { render :xml => @log, :status => :created, :location => @log } else format.html { render :action => "new" } format.xml { render :xml => @log.errors, :status => :unprocessable_entity } end end end # GET /logs/new # GET /logs/new.xml def new @log = Log.new @m_types = Log.types @cars = Car.all print @maintenance if not params[:car].nil? @log.car = params[:car] end respond_to do |format| format.html # new.html.erb format.xml { render :xml => @log } end end ==== View ====

New log

<% form_for(@log) do |f| %> <%= f.error_messages %>

<%= f.label :date %>
<%= f.date_select :date %>

<%= f.label :title %>
<%= f.text_field :title %>

<%= f.label :summary %>
<%= f.text_field :summary %>

<%= f.label :car %>
<%= collection_select(:log, :car_id, @cars, :id, :name, {}, {}) %>

<%= f.label :rtype %> <%= f.select :rtype, @m_types %>

<%= f.label :description %>
<%= f.text_area :description %>

<%= f.submit 'Create' %>

<% end %> <%= link_to 'Back', logs_path %>