Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # model.rb (as in "runway model")
- class Model < ActiveRecord::Base
- belongs_to :user
- belongs_to :city
- validates_associated :city
- belongs_to :region
- belongs_to :country
- belongs_to :body_type
- belongs_to :skin_color
- has_many :pics
- def sorted_pics
- self.pics.sort{ |p1, p2| p1.order <=> p2.order }
- end
- has_many :job_type_preferences, :dependent => :destroy
- has_many :job_types, :through => :job_type_preferences
- has_many :region_preferences, :dependent => :destroy
- has_many :regions, :through => :region_preferences
- has_many :language_preferences, :dependent => :destroy
- has_many :languages, :through => :language_preferences
- attr_accessor :job_type_preference_ids # This is an array of job type ids as strings coming from the form of checkboxes.
- after_save :update_job_type_preferences
- def update_job_type_preferences
- unless job_type_preference_ids.nil?
- self.job_types.each do |m|
- # Take out the job types we're not interested in anymore.
- m.destroy unless job_type_preference_ids.include?(m.id.to_s)
- # We don't have to add it if it's already there in the database.
- job_type_preference_ids.delete(m.id.to_s)
- end
- # Go through the remaining ones that are in the array, but not yet in the database.
- job_type_preference_ids.each do |g|
- self.job_type_preferences.create(:job_type_id => g) unless g.blank?
- end
- reload
- self.job_type_preference_ids = nil
- end
- end
- attr_accessor :region_preference_ids # This is an array of job type ids as strings coming from the form of checkboxes.
- after_save :update_region_preferences
- def update_region_preferences
- unless region_preference_ids.nil?
- self.regions.each do |m|
- # Take out the job types we're not interested in anymore.
- m.destroy unless region_preference_ids.include?(m.id.to_s)
- # We don't have to add it if it's already there in the database.
- region_preference_ids.delete(m.id.to_s)
- end
- # Go through the remaining ones that are in the array, but not yet in the database.
- region_preference_ids.each do |g|
- self.region_preferences.create(:region_id => g) unless g.blank?
- end
- reload
- self.region_preference_ids = nil
- end
- end
- attr_accessor :language_preference_ids # This is an array of job type ids as strings coming from the form of checkboxes.
- after_save :update_language_preferences
- def update_language_preferences
- unless language_preference_ids.nil?
- self.languages.each do |m|
- # Take out the job types we're not interested in anymore.
- m.destroy unless language_preference_ids.include?(m.id.to_s)
- # We don't have to add it if it's already there in the database.
- language_preference_ids.delete(m.id.to_s)
- end
- # Go through the remaining ones that are in the array, but not yet in the database.
- language_preference_ids.each do |g|
- self.language_preferences.create(:language_id => g) unless g.blank?
- end
- reload
- self.language_preference_ids = nil
- end
- end
- #models_controller.rb
- class ModelsController < ResourceController::Base
- create.response do |wants|
- wants.html{
- @user = User.new( params[ :user ] )
- @country = Country.find( params[ :user ][ :country_id ] ) if ! params[:user][:country_id].blank?
- @user.country = @country
- @region = Region.find( params[ :user ][ :region_id ] ) if ! params[:user][:region_id].blank?
- @user.region = @region
- @city = City.find( params[ :user ][ :city_id ] ) if ! params[:user][:city_id].blank?
- @user.city = @city
- @model = Model.new( params[ :model ] )
- @model.user = @user
- if @user.save && @model.errors.blank? && @model.errors.blank?
- flash[:notice] = "Thanks for registering!"
- @object = @model
- render :action => :show
- else
- flash[:notice] = "There were errors."
- flash[:errors] = @model.errors
- redirect_to new_model_path
- end
- }
- end
- # /views/model/new.html.haml
- .registration_format
- .error= error_messages_for :model, :user
- - form_for(:model, :url => collection_url) do |f|
- = render :partial => "form", :locals => { :f => f }
- %p= submit_tag "Register", :id => 'register_submit_button'
- # _form.html.haml
- %h3 General Info:
- %table
- %tr
- %td
- %label{:for => "first_name"} First Name:
- %td
- =text_field :user, :first_name
- %tr
- %td
- %label{:for => "last_name"} Last Name:
- %td
- =text_field :user, :last_name
- %tr
- %td
- %label{:for => "user_input_mobile_phone"} Mobile phone:
- %td
- =text_field :user, :input_mobile_phone
- %tr
- %td
- %label{:for => "email"} Email:
- %td
- =text_field :user, :email
- .white_note * Note: This email will be used as your login id.
- - if !logged_in?
- %tr
- %td
- %label{:for => "password"} Password:
- %td
- =password_field :user, :password
- %tr
- %td
- %label{:for => "password_confirmation"} Confirm Password:
- %td
- =password_field :user, :password_confirmation
- %tr
- %td
- %label{:for => "country"} Country:
- %td
- = select 'user', 'country_id', Country.find(:all).collect { |c| [c.name, c.id] }
- %tr
- %td
- %label{:for => "region"} Region:
- %td
- = select 'user', 'region_id', Region.find(:all).collect {|r| [r.name, r.id] }, { :include_blank => true }
- %tr
- %td
- %label{:for => "city_id"} City:
- %td
- = select 'user', 'city_id', City.find( :all, :order => :name ).collect{ |c| [c.name, c.id] }, { :include_blank => true }
- %tr
- %td
- %label{:for => "address"} Address:
- %td
- = text_area :user, :address, :cols => 30, :rows => 5
- %tr
- %td
- %label{:for => "user_birth_day"} Birth Date:
- %td
- = date_select 'user', 'birth_day', :start_year => 1950, :end_year => 2005, :order => [:month, :day, :year]
- %br/
- %hr{ :width => '50%'}/
- %h3 Modeling Info:
- %table
- %tr
- %td
- %label{:for => "model_height"} Height:
- %td
- = select 'model', 'height_feet', (4..7).to_a, { :include_blank => true }
- '
- = select 'model', 'height_inches', (0..11).to_a, { :include_blank => true }
- "
- %tr
- %td
- %label{:for => "model_weight_pounds"} Weight:
- %td
- = select 'model', 'weight_pounds', (80..200).to_a, { :include_blank => true }
- lbs
- %tr
- %td
- %label{:for => "model_body_type_id"} Body Type:
- %td= select 'model', 'body_type_id', BodyType.find(:all).collect {|bt| [bt.name, bt.id] }, { :include_blank => true }
- %tr
- %td
- %label{:for => "model_skin_color_id"} Skin Complexion:
- %td= select 'model', 'skin_color_id', SkinColor.find(:all).collect {|s| [s.name, s.id] }, { :include_blank => true }
- %tr
- %td
- %label{:for => "model_minimum_pay"} Minimum pay:
- %td
- = select 'model', 'minimum_pay', {'Any' => 0, '1,000' => 1000, '1,500' => 1500, '2,000' => 2000, '2,500' => 2500, '3,000' => 3000, '3,500' => 3500}.sort
- pesos
- %br/
- %hr{ :width => '50%'}/
- %h3 Job Preferences:
- %table
- %tr
- %td{ :colspan => 2 }
- %tr
- %td{ :colspan => 2 }
- Modeling Job Types:
- = preference_table( JobType, @model )
- %tr
- %td{ :colspan => 2 }
- Area(s) where you are willing to work:
- = preference_table( Region, @model, 3 )
- %tr
- %td{ :colspan => 2 }
- Language(s) that you are fluent in:
- = preference_table( Language, @model, 4 )
- %br/
- %br/
Add Comment
Please, Sign In to add comment