Chad
2008-Feb-05 06:16 UTC
Going Insane.... Getting "Type Mismatch Error" on Create & Update
Hello,
I am really pulling my hair out on this one and so would desperately
appreciate any help. The application I am building has Schools and
SchoolZones, both are in a HABTM relationship. On the School view
there is a list of checkbox for each corresponding SchoolZone that
School should belong to. When I submit, either for a Create and
Update action I get the following error.
ActiveRecord::AssociationTypeMismatch in SchoolsController#update
SchoolZone expected, got SchoolZone
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations/association_proxy.rb:148:in `raise_on_type_mismatch''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations/association_collection.rb:141:in `replace''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations/association_collection.rb:141:in `each''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations/association_collection.rb:141:in `replace''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations.rb:962:in `school_zones=''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations.rb:972:in `send''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
associations.rb:972:in `school_zone_ids=''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
base.rb:1675:in `send''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
base.rb:1675:in `attributes=''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
base.rb:1674:in `each''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
base.rb:1674:in `attributes=''
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
base.rb:1594:in `update_attributes''
/var/www/html/BostonConnects/app/controllers/schools_controller.rb:
57:in `update''
/usr/bin/mongrel_rails:16:in `load''
/usr/bin/mongrel_rails:16
The really wierd thing is that this works on my local, which is a
Windows XP machine. The error only shows when I deploy it to our
Linux test environment. I posted the other code below in the hopes
that it helps. Any insight would be appreciated at this point... Many
thanks in advance. -- Chad
class School < ActiveRecord::Base
# Relationships
#has_and_belongs_to_many :users
has_and_belongs_to_many :services
has_and_belongs_to_many :school_zones
has_many :students
has_many :users
# End Relationships
# Properties
attr_accessor :email_address_confirmation
def school_zone_names
if @school_zones.nil?
school_zones
end
s = ""
i = 0
for schoolzone in @school_zones
s += i == 0 ? schoolzone.name : ", " + schoolzone.name
i += 1
end
@school_zone_names = s
end
def principal_full_name
@principal_full_name = " #{principal_first_name}
#{principal_last_name}"
end
# End Properties
# Validators
validates_presence_of :name, :address_one, :city, :state, :zipcode
validates_confirmation_of :email_address,
:if => Proc.new{ |u| !u.email_address.blank? }
validates_format_of :zipcode,
:with => /^\d{5}([-|\s]?\d{4})?$/ix,
:if => Proc.new { |u| !u.zipcode.blank? }
validates_format_of :email_address,
:with => /^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})
(\]?)$/ix,
:if => Proc.new { |u| !u.email_address.blank? }
validates_format_of :phone_one,
:with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
ix,
:message => "is invalid. Must be in the xxx-xxx-xxxx format.",
:if => Proc.new { |u| !u.phone_one.blank? }
validates_format_of :phone_two,
:with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
ix,
:message => "is invalid. Must be in the xxx-xxx-xxxx format.",
:if => Proc.new { |u| !u.phone_two.blank? }
validates_format_of :fax,
:with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
ix,
:message => "is invalid. Must be in the xxx-xxx-xxxx format.",
:if => Proc.new { |u| !u.fax.blank?}
# End Validators
# Static Methods
def School.find_id_and_name
School.find(:all,
:select => "schools.id, schools.name",
:conditions => "schools.active = 1",
:order => "schools.name")
end
def School.search(search_term, show_inactive, page, sort_order)
page_size = 50
if (search_term && search_term.empty? == false)
School.paginate(:per_page => page_size,
:page => page,
:conditions => [''schools.active = '' + show_inactive
+ '' AND
schools.name LIKE ?'', "%#{search_term}%"],
:order => sort_order)
else
School.paginate(:per_page => page_size,
:page => page,
:conditions => ''schools.active = '' + show_inactive,
:order => sort_order)
end
end
# End Methods
end
class SchoolZone < ActiveRecord::Base
# Relationships
has_and_belongs_to_many :schools
# End Relationship
# Static Methods
def SchoolZone.find_id_and_name()
SchoolZone.find(:all,
:select => "school_zones.id, school_zones.name",
:conditions => "school_zones.active = 1",
:order => "school_zones.name")
end
# End Static Methods
end
class SchoolsController < ApplicationController
helper :sort
include SortHelper
require "form_value"
helper :search
include SearchHelper
def index
list
render :action => ''list''
end
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
verify :method => :post, :only => [ :create, :update ],
:redirect_to => { :action => :list }
def list
search = params[:search]
sort_init(''name'', :table =>
''schools'')
sort_update
search_init
@schools = School.search(search_term, show_inactive,
params[:page], sort_clause)
end
def new
@school = School.new
init_form_values()
end
def create
@school = School.new(params[:school])
@school.updated_by_id = session[:user_id].to_i
init_form_values()
if @school.save
flash[:notice] = ''The record for '' + @school.name +
'' was
successfully created.''
redirect_to :action => ''list''
else
render :action => ''new''
end
end
def edit
@school = School.find(params[:id])
init_form_values()
end
def update
@school = School.find(params[:id])
@school.updated_by_id = session[:user_id].to_i
init_form_values()
if !params[''school''][''school_zone_ids'']
@school.school_zones.clear
end
if @school.update_attributes(params[:school])
flash[:notice] = ''The record for '' + @school.name
+ '' was
successfully saved.''
redirect_to :action => ''list''
else
render :action => ''edit''
end
end
private
def init_form_values()
@zones = SchoolZone.find_id_and_name()
@states = FormValue.find_states()
end
end
School View:
<%= error_messages_for ''school'' %>
<!--[form:school]-->
<table class="form">
<tr>
<td class="label"><label
for="school_name"><span class="req">*</
span> School name: </label></td>
<td><%= form.text_field :name, :class => "tb",
:maxlength => "50"
%></td>
</tr>
<tr>
<td class="label"><label
for="school_principal_first_name">Principal
First name: </label></td>
<td><%= form.text_field :principal_first_name, :class =>
"tb", :maxlength => "50" %></td>
</tr>
<tr>
<td class="label"><label
for="school_principal_last_name">Principal
Last name: </label></td>
<td><%= form.text_field :principal_last_name, :class =>
"tb", :maxlength => "50" %></td>
</tr>
<tr>
<td class="label"><label
for="school_phone_one">Phone one: </label></
td>
<td><%= form.text_field :phone_one, :class => "tb",
:maxlength =>
"12" %></td>
</tr>
<tr>
<td class="label"><label
for="school_phone_two">Phone two: </label></
td>
<td><%= form.text_field :phone_two, :class => "tb",
:maxlength =>
"12" %></td>
</tr>
<tr>
<td class="label"><label for="school_fax">Fax:
</label></td>
<td><%= form.text_field :fax, :class => "tb", :maxlength
=> "12" %></
td>
</tr>
<tr>
<td class="label"><label
for="school_email_address">Email Address: </
label></td>
<td><%= form.text_field :email_address, :class => "tb",
:maxlength
=> "150" %></td>
</tr>
<% if @school.new_record? %>
<tr>
<td class="label"><label
for="school_address_confirmation">Re-type
Email address: </label></td>
<td><%= form.text_field :email_address_confirmation, :class =>
"tb", :maxlength => "150" %></td>
</tr>
<% end%>
<tr>
<td class="label"><label
for="school_website">Website: </label></td>
<td><%= form.text_field :website, :class => "tb",
:maxlength =>
"150" %></td>
</tr>
<tr>
<td class="label"><label
for="school_school_zone">School zone: </
label></td>
<td><% for school_zone in @zones %>
<input class="cb" type="checkbox"
id="school_zone_<%school_zone.id.to_s %>"
name="school[school_zone_ids][]" value="<%school_zone.id
%>"
<% if @school.school_zone_ids.include?(school_zone.id) %>
checked="checked" <% end %> />
<label class="cb" for="school_zone_<%=
school_zone.id.to_s %>"><%school_zone.name
%></label><br />
<% end %>
</td>
</tr>
<tr>
<td class="label"><label
for="school_address_one"><span
class="req">*</span> Address one: </label></td>
<td><%= form.text_field :address_one, :class => "tb",
:maxlength =>
"50" %></td>
</tr>
<tr>
<td class="label"><label
for="school_address_two">Address two: </
label></td>
<td><%= form.text_field :address_two, :class => "tb",
:maxlength =>
"50" %></td>
</tr>
<tr>
<td class="label"><label
for="school_city"><span class="req">*</
span> City: </label></td>
<td><%= form.text_field :city, :class => "tb",
:maxlength => "50"
%></td>
</tr>
<tr>
<td class="label"><label
for="school_state"><span class="req">*</
span> State: </label></td>
<td><%= form.select(:state, @states.map{ |i| [i.label, i.value] },
{:prompt => true}, :class => "ddl" ) %></td>
</tr>
<tr>
<td class="label"><label
for="school_zipcode"><span class="req">*</
span> Zipcode: </label></td>
<td><%= form.text_field :zipcode, :class => "tb",
:maxlength => "10"
%></td>
</tr>
<tr>
<td class="label">Support Team Meeting Times:</td>
<td>
<div class="label">Individual review</div>
<%= form.text_field :support_meeting_notes, :class =>
"tb", :maxlength => "500" %>
<div />
<% if @school.new_record? || @school.support_meeting_times.nil? %>
<%= form.radio_button :support_meeting_times, 1, :class =>
"rb", :checked => true %>
<% else %>
<%= form.radio_button :support_meeting_times, 1, :class =>
"rb" %>
<% end %>
<label class="rb"
for="school_support_meeting_times_1">NA</label>
<%= form.radio_button :support_meeting_times, 2, :class =>
"rb" %>
<label class="rb"
for="school_support_meeting_times_2">Weekly</
label>
<%= form.radio_button :support_meeting_times, 3, :class =>
"rb" %>
<label class="rb"
for="school_support_meeting_times_3">Bi-Weekly</
label>
</td>
</tr>
<tr>
<td class="label"></td>
<td style="padding-top: 5px;">
<div class="label">Whole class review</div>
<%= form.text_field :class_meeting_notes, :class =>
"tb", :maxlength => "500" %>
<div />
<% if @school.new_record? || @school.class_meeting_times.nil?%>
<%= form.radio_button :class_meeting_times, 1, :class =>
"rb",:checked => true %>
<% else %>
<%= form.radio_button :class_meeting_times, 1, :class =>
"rb" %>
<% end %>
<label class="rb"
for="school_class_meeting_times_1">NA</label>
<%= form.radio_button :class_meeting_times, 2, :class => "rb"
%>
<label class="rb"
for="school_class_meeting_times_2">Weekly</label>
<%= form.radio_button :class_meeting_times, 3, :class => "rb"
%>
<label class="rb"
for="school_class_meeting_times_3">Bi-Weekly</
label>
</td>
</tr>
<tr>
<td class="label"><label
for="school_notes">Notes: </label></td>
<td><%= form.text_area :notes, :style=>"width: 98%; height:
50px;", :class => "tb", :maxlength => "1000"
%></td>
</tr>
<tr>
<td class="label"><span
class="req">*</span> Status: </td>
<td><%= form.radio_button :active, ''false'', :class
=> "rb" %>
<label class="rb"
for="school_active_false">Inactive</label>
<% if @school.new_record?%>
<%= form.radio_button :active, ''true'', :checked =>
true, :class =>
"rb" %>
<% else %>
<%= form.radio_button :active, ''true'', :class =>
"rb" %>
<% end %>
<label class="rb"
for="school_active_true">Active</label>
</td>
</tr>
</table>
<%= form.hidden_field :created_on %>
<%= form.hidden_field :updated_on %>
<%= form.hidden_field :lock_version %>
<!--[eoform:school]-->
DataBase Schema:
create_table "school_zones", :force => true do |t|
t.column "name", :string, :limit => 150, :default =>
"", :null
=> false
t.column "active", :integer, :default => 1,
:null
=> false
end
create_table "school_zones_schools", :id => false, :force =>
true do
|t|
t.column "school_id", :integer, :null => false
t.column "school_zone_id", :integer, :null => false
end
create_table "schools", :force => true do |t|
t.column "name", :string, :limit =>
150, :default => "", :null => false
t.column "website", :string, :limit => 150
t.column "principal_first_name", :string, :limit => 50
t.column "principal_last_name", :string, :limit => 50
t.column "email_address", :string, :limit => 150
t.column "phone_one", :string, :limit => 20
t.column "phone_two", :string, :limit => 20
t.column "fax", :string, :limit => 20
t.column "school_zone", :integer
t.column "address_one", :string, :limit =>
50, :default => "", :null => false
t.column "address_two", :string, :limit => 50
t.column "city", :string, :limit =>
50, :default => "", :null => false
t.column "state", :string, :limit =>
2, :default => "", :null => false
t.column "zipcode", :string, :limit =>
10, :default => "", :null => false
t.column "support_meeting_notes", :string, :limit => 500
t.column
"support_meeting_times", :integer, :default =>
1, :null => false
t.column "class_meeting_notes", :string, :limit => 500
t.column
"class_meeting_times", :integer, :default =>
1, :null => false
t.column "notes", :string, :limit => 1000
t.column
"active", :boolean, :default =>
true, :null => false
t.column
"updated_by_id", :integer,
:null
=> false
t.column
"created_on", :datetime,
:null
=> false
t.column
"updated_on", :datetime,
:null
=> false
t.column
"lock_version", :integer, :default =>
1, :null => false
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Feb-05 09:48 UTC
Re: Going Insane.... Getting "Type Mismatch Error" on Create & Update
On 5 Feb 2008, at 06:16, Chad wrote:> > Hello, > > I am really pulling my hair out on this one and so would desperately > appreciate any help. The application I am building has Schools and > SchoolZones, both are in a HABTM relationship. On the School view > there is a list of checkbox for each corresponding SchoolZone that > School should belong to. When I submit, either for a Create and > Update action I get the following error.Last time I saw something like this it was due to a dependencies problem: if the problem goes away if you run in production mode, then the problem is that rails'' automatic class reloading is getting confused. When i''ve seen this before, the problem has usually been require statements of models etc..., the require bypassed the magic class loading stuff and so things got confused. Either using require_dependency or just removing the requires usually sorts it out. Fred> > > ActiveRecord::AssociationTypeMismatch in SchoolsController#update > SchoolZone expected, got SchoolZone > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations/association_proxy.rb:148:in `raise_on_type_mismatch'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations/association_collection.rb:141:in `replace'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations/association_collection.rb:141:in `each'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations/association_collection.rb:141:in `replace'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations.rb:962:in `school_zones='' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations.rb:972:in `send'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > associations.rb:972:in `school_zone_ids='' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > base.rb:1675:in `send'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > base.rb:1675:in `attributes='' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > base.rb:1674:in `each'' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > base.rb:1674:in `attributes='' > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > base.rb:1594:in `update_attributes'' > /var/www/html/BostonConnects/app/controllers/schools_controller.rb: > 57:in `update'' > /usr/bin/mongrel_rails:16:in `load'' > /usr/bin/mongrel_rails:16 > > The really wierd thing is that this works on my local, which is a > Windows XP machine. The error only shows when I deploy it to our > Linux test environment. I posted the other code below in the hopes > that it helps. Any insight would be appreciated at this point... Many > thanks in advance. -- Chad > > class School < ActiveRecord::Base > # Relationships > #has_and_belongs_to_many :users > has_and_belongs_to_many :services > has_and_belongs_to_many :school_zones > has_many :students > has_many :users > > # End Relationships > > # Properties > attr_accessor :email_address_confirmation > > def school_zone_names > if @school_zones.nil? > school_zones > end > > s = "" > i = 0 > for schoolzone in @school_zones > s += i == 0 ? schoolzone.name : ", " + schoolzone.name > i += 1 > end > @school_zone_names = s > end > > def principal_full_name > @principal_full_name = " #{principal_first_name} > #{principal_last_name}" > end > # End Properties > > # Validators > validates_presence_of :name, :address_one, :city, :state, :zipcode > validates_confirmation_of :email_address, > :if => Proc.new{ |u| !u.email_address.blank? } > validates_format_of :zipcode, > :with => /^\d{5}([-|\s]?\d{4})?$/ix, > :if => Proc.new { |u| !u.zipcode.blank? } > validates_format_of :email_address, > :with => /^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4}) > (\]?)$/ix, > :if => Proc.new { |u| !u.email_address.blank? } > validates_format_of :phone_one, > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > ix, > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > :if => Proc.new { |u| !u.phone_one.blank? } > validates_format_of :phone_two, > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > ix, > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > :if => Proc.new { |u| !u.phone_two.blank? } > validates_format_of :fax, > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > ix, > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > :if => Proc.new { |u| !u.fax.blank?} > # End Validators > > # Static Methods > def School.find_id_and_name > School.find(:all, > :select => "schools.id, schools.name", > :conditions => "schools.active = 1", > :order => "schools.name") > end > > def School.search(search_term, show_inactive, page, sort_order) > page_size = 50 > if (search_term && search_term.empty? == false) > School.paginate(:per_page => page_size, > :page => page, > :conditions => [''schools.active = '' + show_inactive + '' AND > schools.name LIKE ?'', "%#{search_term}%"], > :order => sort_order) > else > School.paginate(:per_page => page_size, > :page => page, > :conditions => ''schools.active = '' + show_inactive, > :order => sort_order) > end > end > # End Methods > > end > > > class SchoolZone < ActiveRecord::Base > # Relationships > has_and_belongs_to_many :schools > # End Relationship > > # Static Methods > def SchoolZone.find_id_and_name() > SchoolZone.find(:all, > :select => "school_zones.id, school_zones.name", > :conditions => "school_zones.active = 1", > :order => "school_zones.name") > end > # End Static Methods > end > > > class SchoolsController < ApplicationController > helper :sort > include SortHelper > require "form_value" > helper :search > include SearchHelper > > def index > list > render :action => ''list'' > end > > # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) > verify :method => :post, :only => [ :create, :update ], > :redirect_to => { :action => :list } > > def list > search = params[:search] > sort_init(''name'', :table => ''schools'') > sort_update > search_init > @schools = School.search(search_term, show_inactive, > params[:page], sort_clause) > end > > def new > @school = School.new > init_form_values() > end > > def create > @school = School.new(params[:school]) > @school.updated_by_id = session[:user_id].to_i > init_form_values() > > if @school.save > flash[:notice] = ''The record for '' + @school.name + '' was > successfully created.'' > redirect_to :action => ''list'' > else > render :action => ''new'' > end > end > > def edit > @school = School.find(params[:id]) > init_form_values() > end > > def update > @school = School.find(params[:id]) > @school.updated_by_id = session[:user_id].to_i > init_form_values() > > if !params[''school''][''school_zone_ids''] > @school.school_zones.clear > end > > if @school.update_attributes(params[:school]) > flash[:notice] = ''The record for '' + @school.name + '' was > successfully saved.'' > redirect_to :action => ''list'' > else > render :action => ''edit'' > end > end > > private > def init_form_values() > @zones = SchoolZone.find_id_and_name() > @states = FormValue.find_states() > end > end > > School View: > <%= error_messages_for ''school'' %> > > <!--[form:school]--> > <table class="form"> > <tr> > <td class="label"><label for="school_name"><span class="req">*</ > span> School name: </label></td> > <td><%= form.text_field :name, :class => "tb", :maxlength => "50" > %></td> > </tr> > > <tr> > <td class="label"><label for="school_principal_first_name">Principal > First name: </label></td> > <td><%= form.text_field :principal_first_name, :class => > "tb", :maxlength => "50" %></td> > </tr> > > <tr> > <td class="label"><label for="school_principal_last_name">Principal > Last name: </label></td> > <td><%= form.text_field :principal_last_name, :class => > "tb", :maxlength => "50" %></td> > </tr> > > <tr> > <td class="label"><label for="school_phone_one">Phone one: </ > label></ > td> > <td><%= form.text_field :phone_one, :class => "tb", :maxlength => > "12" %></td> > </tr> > > <tr> > <td class="label"><label for="school_phone_two">Phone two: </ > label></ > td> > <td><%= form.text_field :phone_two, :class => "tb", :maxlength => > "12" %></td> > </tr> > > <tr> > <td class="label"><label for="school_fax">Fax: </label></td> > <td><%= form.text_field :fax, :class => "tb", :maxlength => "12" > %></ > td> > </tr> > > <tr> > <td class="label"><label for="school_email_address">Email Address: > </ > label></td> > <td><%= form.text_field :email_address, :class => "tb", :maxlength > => "150" %></td> > </tr> > > <% if @school.new_record? %> > <tr> > <td class="label"><label for="school_address_confirmation">Re-type > Email address: </label></td> > <td><%= form.text_field :email_address_confirmation, :class => > "tb", :maxlength => "150" %></td> > </tr> > <% end%> > > <tr> > <td class="label"><label for="school_website">Website: </label></td> > <td><%= form.text_field :website, :class => "tb", :maxlength => > "150" %></td> > </tr> > > <tr> > <td class="label"><label for="school_school_zone">School zone: </ > label></td> > <td><% for school_zone in @zones %> > <input class="cb" type="checkbox" id="school_zone_<%> school_zone.id.to_s %>" name="school[school_zone_ids][]" value="<%> school_zone.id %>" > <% if @school.school_zone_ids.include?(school_zone.id) %> > checked="checked" <% end %> /> > <label class="cb" for="school_zone_<%= school_zone.id.to_s %>"><%> school_zone.name %></label><br /> > <% end %> > > </td> > </tr> > > <tr> > <td class="label"><label for="school_address_one"><span > class="req">*</span> Address one: </label></td> > <td><%= form.text_field :address_one, :class => "tb", :maxlength => > "50" %></td> > </tr> > > <tr> > <td class="label"><label for="school_address_two">Address two: </ > label></td> > <td><%= form.text_field :address_two, :class => "tb", :maxlength => > "50" %></td> > </tr> > > <tr> > <td class="label"><label for="school_city"><span class="req">*</ > span> City: </label></td> > <td><%= form.text_field :city, :class => "tb", :maxlength => "50" > %></td> > </tr> > > <tr> > <td class="label"><label for="school_state"><span class="req">*</ > span> State: </label></td> > <td><%= form.select(:state, @states.map{ |i| [i.label, i.value] }, > {:prompt => true}, :class => "ddl" ) %></td> > </tr> > > <tr> > <td class="label"><label for="school_zipcode"><span class="req">*</ > span> Zipcode: </label></td> > <td><%= form.text_field :zipcode, :class => "tb", :maxlength => "10" > %></td> > </tr> > > <tr> > <td class="label">Support Team Meeting Times:</td> > <td> > <div class="label">Individual review</div> > <%= form.text_field :support_meeting_notes, :class => > "tb", :maxlength => "500" %> > <div /> > <% if @school.new_record? || @school.support_meeting_times.nil? %> > <%= form.radio_button :support_meeting_times, 1, :class => > "rb", :checked => true %> > <% else %> > <%= form.radio_button :support_meeting_times, 1, :class => "rb" %> > <% end %> > <label class="rb" for="school_support_meeting_times_1">NA</label> > <%= form.radio_button :support_meeting_times, 2, :class => "rb" %> > <label class="rb" for="school_support_meeting_times_2">Weekly</ > label> > <%= form.radio_button :support_meeting_times, 3, :class => "rb" %> > <label class="rb" for="school_support_meeting_times_3">Bi-Weekly</ > label> > </td> > </tr> > > <tr> > <td class="label"></td> > <td style="padding-top: 5px;"> > <div class="label">Whole class review</div> > <%= form.text_field :class_meeting_notes, :class => > "tb", :maxlength => "500" %> > <div /> > <% if @school.new_record? || @school.class_meeting_times.nil?%> > <%= form.radio_button :class_meeting_times, 1, :class => > "rb",:checked => true %> > <% else %> > <%= form.radio_button :class_meeting_times, 1, :class => "rb" %> > <% end %> > <label class="rb" for="school_class_meeting_times_1">NA</label> > <%= form.radio_button :class_meeting_times, 2, :class => "rb" %> > <label class="rb" for="school_class_meeting_times_2">Weekly</label> > <%= form.radio_button :class_meeting_times, 3, :class => "rb" %> > <label class="rb" for="school_class_meeting_times_3">Bi-Weekly</ > label> > </td> > </tr> > > <tr> > <td class="label"><label for="school_notes">Notes: </label></td> > <td><%= form.text_area :notes, :style=>"width: 98%; height: > 50px;", :class => "tb", :maxlength => "1000" %></td> > </tr> > > <tr> > <td class="label"><span class="req">*</span> Status: </td> > <td><%= form.radio_button :active, ''false'', :class => "rb" %> > <label class="rb" for="school_active_false">Inactive</label> > <% if @school.new_record?%> > <%= form.radio_button :active, ''true'', :checked => true, :class => > "rb" %> > <% else %> > <%= form.radio_button :active, ''true'', :class => "rb" %> > <% end %> > <label class="rb" for="school_active_true">Active</label> > </td> > </tr> > </table> > > <%= form.hidden_field :created_on %> > <%= form.hidden_field :updated_on %> > <%= form.hidden_field :lock_version %> > <!--[eoform:school]--> > > > DataBase Schema: > create_table "school_zones", :force => true do |t| > t.column "name", :string, :limit => 150, :default => "", :null > => false > t.column "active", :integer, :default => 1, :null > => false > end > > create_table "school_zones_schools", :id => false, :force => true do > |t| > t.column "school_id", :integer, :null => false > t.column "school_zone_id", :integer, :null => false > end > > create_table "schools", :force => true do |t| > t.column "name", :string, :limit => > 150, :default => "", :null => false > t.column "website", :string, :limit => 150 > t.column "principal_first_name", :string, :limit => 50 > t.column "principal_last_name", :string, :limit => 50 > t.column "email_address", :string, :limit => 150 > t.column "phone_one", :string, :limit => 20 > t.column "phone_two", :string, :limit => 20 > t.column "fax", :string, :limit => 20 > t.column "school_zone", :integer > t.column "address_one", :string, :limit => > 50, :default => "", :null => false > t.column "address_two", :string, :limit => 50 > t.column "city", :string, :limit => > 50, :default => "", :null => false > t.column "state", :string, :limit => > 2, :default => "", :null => false > t.column "zipcode", :string, :limit => > 10, :default => "", :null => false > t.column "support_meeting_notes", :string, :limit => 500 > t.column > "support_meeting_times", :integer, :default => > 1, :null => false > t.column "class_meeting_notes", :string, :limit => 500 > t.column > "class_meeting_times", :integer, :default => > 1, :null => false > t.column "notes", :string, :limit => 1000 > t.column > "active", :boolean, :default => > true, :null => false > t.column > "updated_by_id > ", :integer, :null > => false > t.column > "created_on > ", :datetime, :null > => false > t.column > "updated_on > ", :datetime, :null > => false > t.column > "lock_version", :integer, :default => > 1, :null => false > end > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Chad
2008-Feb-05 17:12 UTC
Re: Going Insane.... Getting "Type Mismatch Error" on Create & Update
Hi Fred, Thanks for the reply. A few things: 1) When you say "Either using require_dependency or just removing the requires usually sorts it out." Where should this be added or removed? I tried adding require "school_zone" to the controller and that did not help. Could you be very specific where you think the changes should be made and I will test them out. And 2) It is not that is working in production mode, rather is working on Windows machine but not the Linux server. Thanks again!! On Feb 5, 4:48 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 5 Feb 2008, at 06:16, Chad wrote: > > > > > Hello, > > > I am really pulling my hair out on this one and so would desperately > > appreciate any help. The application I am building has Schools and > > SchoolZones, both are in a HABTM relationship. On the School view > > there is a list of checkbox for each corresponding SchoolZone that > > School should belong to. When I submit, either for a Create and > > Update action I get the following error. > > Last time I saw something like this it was due to a dependencies > problem: if the problem goes away if you run in production mode, then > the problem is that rails'' automatic class reloading is getting > confused. When i''ve seen this before, the problem has usually been > require statements of models etc..., the require bypassed the magic > class loading stuff and so things got confused. Either using > require_dependency or just removing the requires usually sorts it out. > > Fred > > > > > > > ActiveRecord::AssociationTypeMismatch in SchoolsController#update > > SchoolZone expected, got SchoolZone > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations/association_proxy.rb:148:in `raise_on_type_mismatch'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations/association_collection.rb:141:in `replace'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations/association_collection.rb:141:in `each'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations/association_collection.rb:141:in `replace'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations.rb:962:in `school_zones='' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations.rb:972:in `send'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > associations.rb:972:in `school_zone_ids='' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > base.rb:1675:in `send'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > base.rb:1675:in `attributes='' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > base.rb:1674:in `each'' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > base.rb:1674:in `attributes='' > > /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > base.rb:1594:in `update_attributes'' > > /var/www/html/BostonConnects/app/controllers/schools_controller.rb: > > 57:in `update'' > > /usr/bin/mongrel_rails:16:in `load'' > > /usr/bin/mongrel_rails:16 > > > The really wierd thing is that this works on my local, which is a > > Windows XP machine. The error only shows when I deploy it to our > > Linux test environment. I posted the other code below in the hopes > > that it helps. Any insight would be appreciated at this point... Many > > thanks in advance. -- Chad > > > class School < ActiveRecord::Base > > # Relationships > > #has_and_belongs_to_many :users > > has_and_belongs_to_many :services > > has_and_belongs_to_many :school_zones > > has_many :students > > has_many :users > > > # End Relationships > > > # Properties > > attr_accessor :email_address_confirmation > > > def school_zone_names > > if @school_zones.nil? > > school_zones > > end > > > s = "" > > i = 0 > > for schoolzone in @school_zones > > s += i == 0 ? schoolzone.name : ", " + schoolzone.name > > i += 1 > > end > > @school_zone_names = s > > end > > > def principal_full_name > > @principal_full_name = " #{principal_first_name} > > #{principal_last_name}" > > end > > # End Properties > > > # Validators > > validates_presence_of :name, :address_one, :city, :state, :zipcode > > validates_confirmation_of :email_address, > > :if => Proc.new{ |u| !u.email_address.blank? } > > validates_format_of :zipcode, > > :with => /^\d{5}([-|\s]?\d{4})?$/ix, > > :if => Proc.new { |u| !u.zipcode.blank? } > > validates_format_of :email_address, > > :with => /^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4}) > > (\]?)$/ix, > > :if => Proc.new { |u| !u.email_address.blank? } > > validates_format_of :phone_one, > > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > ix, > > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > :if => Proc.new { |u| !u.phone_one.blank? } > > validates_format_of :phone_two, > > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > ix, > > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > :if => Proc.new { |u| !u.phone_two.blank? } > > validates_format_of :fax, > > :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > ix, > > :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > :if => Proc.new { |u| !u.fax.blank?} > > # End Validators > > > # Static Methods > > def School.find_id_and_name > > School.find(:all, > > :select => "schools.id, schools.name", > > :conditions => "schools.active = 1", > > :order => "schools.name") > > end > > > def School.search(search_term, show_inactive, page, sort_order) > > page_size = 50 > > if (search_term && search_term.empty? == false) > > School.paginate(:per_page => page_size, > > :page => page, > > :conditions => [''schools.active = '' + show_inactive + '' AND > > schools.name LIKE ?'', "%#{search_term}%"], > > :order => sort_order) > > else > > School.paginate(:per_page => page_size, > > :page => page, > > :conditions => ''schools.active = '' + show_inactive, > > :order => sort_order) > > end > > end > > # End Methods > > > end > > > class SchoolZone < ActiveRecord::Base > > # Relationships > > has_and_belongs_to_many :schools > > # End Relationship > > > # Static Methods > > def SchoolZone.find_id_and_name() > > SchoolZone.find(:all, > > :select => "school_zones.id, school_zones.name", > > :conditions => "school_zones.active = 1", > > :order => "school_zones.name") > > end > > # End Static Methods > > end > > > class SchoolsController < ApplicationController > > helper :sort > > include SortHelper > > require "form_value" > > helper :search > > include SearchHelper > > > def index > > list > > render :action => ''list'' > > end > > > # GETs should be safe (seehttp://www.w3.org/2001/tag/doc/whenToUseGet.html) > > verify :method => :post, :only => [ :create, :update ], > > :redirect_to => { :action => :list } > > > def list > > search = params[:search] > > sort_init(''name'', :table => ''schools'') > > sort_update > > search_init > > @schools = School.search(search_term, show_inactive, > > params[:page], sort_clause) > > end > > > def new > > @school = School.new > > init_form_values() > > end > > > def create > > @school = School.new(params[:school]) > > -b5YJWEM4MkMaSwR9sru3fA@public.gmane.org_by_id = session[:user_id].to_i > > init_form_values() > > > if @school.save > > flash[:notice] = ''The record for '' + @school.name + '' was > > successfully created.'' > > redirect_to :action => ''list'' > > else > > render :action => ''new'' > > end > > end > > > def edit > > @school = School.find(params[:id]) > > init_form_values() > > end > > > def update > > @school = School.find(params[:id]) > > -b5YJWEM4MkMaSwR9sru3fA@public.gmane.org_by_id = session[:user_id].to_i > > init_form_values() > > > if !params[''school''][''school_zone_ids''] > > -cMpdoUrVJPgPBGLndItirw@public.gmane.org_zones.clear > > end > > > if @school.update_attributes(params[:school]) > > flash[:notice] = ''The record for '' + @school.name + '' was > > successfully saved.'' > > redirect_to :action => ''list'' > > else > > render :action => ''edit'' > > end > > end > > > private > > def init_form_values() > > @zones = SchoolZone.find_id_and_name() > > @states = FormValue.find_states() > > end > > end > > > School View: > > <%= error_messages_for ''school'' %> > > > <!--[form:school]--> > > <table class="form"> > > <tr> > > <td class="label"><label for="school_name"><span class="req">*</ > > span> School name: </label></td> > > <td><%= form.text_field :name, :class => "tb", :maxlength => "50" > > %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_principal_first_name">Principal > > First name: </label></td> > > <td><%= form.text_field :principal_first_name, :class => > > "tb", :maxlength => "50" %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_principal_last_name">Principal > > Last name: </label></td> > > <td><%= form.text_field :principal_last_name, :class => > > "tb", :maxlength => "50" %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_phone_one">Phone one: </ > > label></ > > td> > > <td><%= form.text_field :phone_one, :class => "tb", :maxlength => > > "12" %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_phone_two">Phone two: </ > > label></ > > td> > > <td><%= form.text_field :phone_two, :class => "tb", :maxlength => > > "12" %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_fax">Fax: </label></td> > > <td><%= form.text_field :fax, :class => "tb", :maxlength => "12" > > %></ > > td> > > </tr> > > > <tr> > > <td class="label"><label for="school_email_address">Email Address: > > </ > > label></td> > > <td><%= form.text_field :email_address, :class => "tb", :maxlength > > => "150" %></td> > > </tr> > > > <% if @school.new_record? %> > > <tr> > > <td class="label"><label for="school_address_confirmation">Re-type > > Email address: </label></td> > > <td><%= form.text_field :email_address_confirmation, :class => > > "tb", :maxlength => "150" %></td> > > </tr> > > <% end%> > > > <tr> > > <td class="label"><label for="school_website">Website: </label></td> > > <td><%= form.text_field :website, :class => "tb", :maxlength => > > "150" %></td> > > </tr> > > > <tr> > > <td class="label"><label for="school_school_zone">School zone: </ > > label></td> > > <td><% for school_zone in @zones %> > > <input class="cb" type="checkbox" id="school_zone_<%> > school_zone.id.to_s %>" name="school[school_zone_ids][]" value="<%> > school_zone.id %>" > > <% if @school.school_zone_ids.include?(school_zone.id) %> > > checked="checked" <% end %> /> > > <label class="cb" for="school_zone_<%=- Hide quoted text - > > - Show quoted text -... > > read more »--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Feb-05 17:34 UTC
Re: Going Insane.... Getting "Type Mismatch Error" on Create & Update
On 5 Feb 2008, at 17:12, Chad wrote:> > Hi Fred, > > Thanks for the reply. A few things: 1) When you say "Either using > require_dependency or just removing the requires usually sorts it > out." Where should this be added or removed? I tried adding require > "school_zone" to the controller and that did not help. Could you be > very specific where you think the changes should be made and I willI''d remove any require statement of models in your app. Fred> > test them out. And 2) It is not that is working in production mode, > rather is working on Windows machine but not the Linux server. Thanks > again!! > > On Feb 5, 4:48 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: >> On 5 Feb 2008, at 06:16, Chad wrote: >> >> >> >>> Hello, >> >>> I am really pulling my hair out on this one and so would desperately >>> appreciate any help. The application I am building has Schools and >>> SchoolZones, both are in a HABTM relationship. On the School view >>> there is a list of checkbox for each corresponding SchoolZone that >>> School should belong to. When I submit, either for a Create and >>> Update action I get the following error. >> >> Last time I saw something like this it was due to a dependencies >> problem: if the problem goes away if you run in production mode, then >> the problem is that rails'' automatic class reloading is getting >> confused. When i''ve seen this before, the problem has usually been >> require statements of models etc..., the require bypassed the magic >> class loading stuff and so things got confused. Either using >> require_dependency or just removing the requires usually sorts it >> out. >> >> Fred >> >> >> >> >> >>> ActiveRecord::AssociationTypeMismatch in SchoolsController#update >>> SchoolZone expected, got SchoolZone >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations/association_proxy.rb:148:in `raise_on_type_mismatch'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations/association_collection.rb:141:in `replace'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations/association_collection.rb:141:in `each'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations/association_collection.rb:141:in `replace'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations.rb:962:in `school_zones='' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations.rb:972:in `send'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> associations.rb:972:in `school_zone_ids='' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> base.rb:1675:in `send'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> base.rb:1675:in `attributes='' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> base.rb:1674:in `each'' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> base.rb:1674:in `attributes='' >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ >>> base.rb:1594:in `update_attributes'' >>> /var/www/html/BostonConnects/app/controllers/schools_controller.rb: >>> 57:in `update'' >>> /usr/bin/mongrel_rails:16:in `load'' >>> /usr/bin/mongrel_rails:16 >> >>> The really wierd thing is that this works on my local, which is a >>> Windows XP machine. The error only shows when I deploy it to our >>> Linux test environment. I posted the other code below in the hopes >>> that it helps. Any insight would be appreciated at this point... >>> Many >>> thanks in advance. -- Chad >> >>> class School < ActiveRecord::Base >>> # Relationships >>> #has_and_belongs_to_many :users >>> has_and_belongs_to_many :services >>> has_and_belongs_to_many :school_zones >>> has_many :students >>> has_many :users >> >>> # End Relationships >> >>> # Properties >>> attr_accessor :email_address_confirmation >> >>> def school_zone_names >>> if @school_zones.nil? >>> school_zones >>> end >> >>> s = "" >>> i = 0 >>> for schoolzone in @school_zones >>> s += i == 0 ? schoolzone.name : ", " + schoolzone.name >>> i += 1 >>> end >>> @school_zone_names = s >>> end >> >>> def principal_full_name >>> @principal_full_name = " #{principal_first_name} >>> #{principal_last_name}" >>> end >>> # End Properties >> >>> # Validators >>> validates_presence_of :name, :address_one, :city, :state, :zipcode >>> validates_confirmation_of :email_address, >>> :if => Proc.new{ |u| !u.email_address.blank? } >>> validates_format_of :zipcode, >>> :with => /^\d{5}([-|\s]?\d{4})?$/ix, >>> :if => Proc.new { |u| !u.zipcode.blank? } >>> validates_format_of :email_address, >>> :with => /^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4}) >>> (\]?)$/ix, >>> :if => Proc.new { |u| !u.email_address.blank? } >>> validates_format_of :phone_one, >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ >>> ix, >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", >>> :if => Proc.new { |u| !u.phone_one.blank? } >>> validates_format_of :phone_two, >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ >>> ix, >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", >>> :if => Proc.new { |u| !u.phone_two.blank? } >>> validates_format_of :fax, >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ >>> ix, >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", >>> :if => Proc.new { |u| !u.fax.blank?} >>> # End Validators >> >>> # Static Methods >>> def School.find_id_and_name >>> School.find(:all, >>> :select => "schools.id, schools.name", >>> :conditions => "schools.active = 1", >>> :order => "schools.name") >>> end >> >>> def School.search(search_term, show_inactive, page, sort_order) >>> page_size = 50 >>> if (search_term && search_term.empty? == false) >>> School.paginate(:per_page => page_size, >>> :page => page, >>> :conditions => [''schools.active = '' + show_inactive + '' AND >>> schools.name LIKE ?'', "%#{search_term}%"], >>> :order => sort_order) >>> else >>> School.paginate(:per_page => page_size, >>> :page => page, >>> :conditions => ''schools.active = '' + show_inactive, >>> :order => sort_order) >>> end >>> end >>> # End Methods >> >>> end >> >>> class SchoolZone < ActiveRecord::Base >>> # Relationships >>> has_and_belongs_to_many :schools >>> # End Relationship >> >>> # Static Methods >>> def SchoolZone.find_id_and_name() >>> SchoolZone.find(:all, >>> :select => "school_zones.id, school_zones.name", >>> :conditions => "school_zones.active = 1", >>> :order => "school_zones.name") >>> end >>> # End Static Methods >>> end >> >>> class SchoolsController < ApplicationController >>> helper :sort >>> include SortHelper >>> require "form_value" >>> helper :search >>> include SearchHelper >> >>> def index >>> list >>> render :action => ''list'' >>> end >> >>> # GETs should be safe (seehttp://www.w3.org/2001/tag/doc/whenToUseGet.html) >>> verify :method => :post, :only => [ :create, :update ], >>> :redirect_to => { :action => :list } >> >>> def list >>> search = params[:search] >>> sort_init(''name'', :table => ''schools'') >>> sort_update >>> search_init >>> @schools = School.search(search_term, show_inactive, >>> params[:page], sort_clause) >>> end >> >>> def new >>> @school = School.new >>> init_form_values() >>> end >> >>> def create >>> @school = School.new(params[:school]) >>> @school.updated_by_id = session[:user_id].to_i >>> init_form_values() >> >>> if @school.save >>> flash[:notice] = ''The record for '' + @school.name + '' was >>> successfully created.'' >>> redirect_to :action => ''list'' >>> else >>> render :action => ''new'' >>> end >>> end >> >>> def edit >>> @school = School.find(params[:id]) >>> init_form_values() >>> end >> >>> def update >>> @school = School.find(params[:id]) >>> @school.updated_by_id = session[:user_id].to_i >>> init_form_values() >> >>> if !params[''school''][''school_zone_ids''] >>> @school.school_zones.clear >>> end >> >>> if @school.update_attributes(params[:school]) >>> flash[:notice] = ''The record for '' + @school.name + '' was >>> successfully saved.'' >>> redirect_to :action => ''list'' >>> else >>> render :action => ''edit'' >>> end >>> end >> >>> private >>> def init_form_values() >>> @zones = SchoolZone.find_id_and_name() >>> @states = FormValue.find_states() >>> end >>> end >> >>> School View: >>> <%= error_messages_for ''school'' %> >> >>> <!--[form:school]--> >>> <table class="form"> >>> <tr> >>> <td class="label"><label for="school_name"><span >>> class="req">*</ >>> span> School name: </label></td> >>> <td><%= form.text_field :name, :class => >>> "tb", :maxlength => "50" >>> %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label >>> for="school_principal_first_name">Principal >>> First name: </label></td> >>> <td><%= form.text_field :principal_first_name, :class => >>> "tb", :maxlength => "50" %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label >>> for="school_principal_last_name">Principal >>> Last name: </label></td> >>> <td><%= form.text_field :principal_last_name, :class => >>> "tb", :maxlength => "50" %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label for="school_phone_one">Phone >>> one: </ >>> label></ >>> td> >>> <td><%= form.text_field :phone_one, :class => >>> "tb", :maxlength => >>> "12" %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label for="school_phone_two">Phone >>> two: </ >>> label></ >>> td> >>> <td><%= form.text_field :phone_two, :class => >>> "tb", :maxlength => >>> "12" %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label for="school_fax">Fax: </ >>> label></td> >>> <td><%= form.text_field :fax, :class => >>> "tb", :maxlength => "12" >>> %></ >>> td> >>> </tr> >> >>> <tr> >>> <td class="label"><label >>> for="school_email_address">Email Address: >>> </ >>> label></td> >>> <td><%= form.text_field :email_address, :class => >>> "tb", :maxlength >>> => "150" %></td> >>> </tr> >> >>> <% if @school.new_record? %> >>> <tr> >>> <td class="label"><label >>> for="school_address_confirmation">Re-type >>> Email address: </label></td> >>> <td><%= >>> form.text_field :email_address_confirmation, :class => >>> "tb", :maxlength => "150" %></td> >>> </tr> >>> <% end%> >> >>> <tr> >>> <td class="label"><label for="school_website">Website: >>> </label></td> >>> <td><%= form.text_field :website, :class => >>> "tb", :maxlength => >>> "150" %></td> >>> </tr> >> >>> <tr> >>> <td class="label"><label >>> for="school_school_zone">School zone: </ >>> label></td> >>> <td><% for school_zone in @zones %> >>> <input class="cb" type="checkbox" >>> id="school_zone_<%>>> school_zone.id.to_s %>" name="school[school_zone_ids][]" value="<%>>> school_zone.id %>" >>> <% if @school.school_zone_ids.include? >>> (school_zone.id) %> >>> checked="checked" <% end %> /> >>> <label class="cb" for="school_zone_<%=- >>> Hide quoted text - >> >> - Show quoted text -... >> >> read more » > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Chad
2008-Feb-05 18:27 UTC
Re: Going Insane.... Getting "Type Mismatch Error" on Create & Update
Hi Fred,
No luck... Still getting the same message, I came accross another
thread http://www.ruby-forum.com/topic/101817 (that I think you
participated in) where it was suggested that the active record
association_proxy file that the raise_on_type_mismatch method be
changed to:
/activerecord-1.15.3/lib/active_record/associations/
association_proxy.rb:146
def raise_on_type_mismatch(record)
unless record.is_a?(eval(@reflection.class_name))
raise ActiveRecord::AssociationTypeMismatch,
"#{@reflection.class_name} #{@reflection.klass} #{
record.is_a?(eval(@reflection.class_name)) } expected, got
#{record.class}"
end
end
I don''t have permission to change this file, but if you think it might
solve it I will work with the Sys Admin. What''s your sense? Also are
there any other workarounds that you know of. At this point it does
not need to be pretty, just work. I really appreciate your help!
On Feb 5, 12:34 pm, Frederick Cheung
<frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> On 5 Feb 2008, at 17:12, Chad wrote:
>
>
>
> > Hi Fred,
>
> > Thanks for the reply. A few things: 1) When you say "Either
using
> > require_dependency or just removing the requires usually sorts it
> > out." Where should this be added or removed? I tried adding
require
> > "school_zone" to the controller and that did not help. Could
you be
> > very specific where you think the changes should be made and I will
>
> I''d remove any require statement of models in your app.
>
> Fred
>
>
>
>
>
> > test them out. And 2) It is not that is working in production mode,
> > rather is working on Windows machine but not the Linux server. Thanks
> > again!!
>
> > On Feb 5, 4:48 am, Frederick Cheung
<frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > wrote:
> >> On 5 Feb 2008, at 06:16, Chad wrote:
>
> >>> Hello,
>
> >>> I am really pulling my hair out on this one and so would
desperately
> >>> appreciate any help. The application I am building has
Schools and
> >>> SchoolZones, both are in a HABTM relationship. On the School
view
> >>> there is a list of checkbox for each corresponding SchoolZone
that
> >>> School should belong to. When I submit, either for a Create
and
> >>> Update action I get the following error.
>
> >> Last time I saw something like this it was due to a dependencies
> >> problem: if the problem goes away if you run in production mode,
then
> >> the problem is that rails'' automatic class reloading is
getting
> >> confused. When i''ve seen this before, the problem has
usually been
> >> require statements of models etc..., the require bypassed the
magic
> >> class loading stuff and so things got confused. Either using
> >> require_dependency or just removing the requires usually sorts it
> >> out.
>
> >> Fred
>
> >>> ActiveRecord::AssociationTypeMismatch in
SchoolsController#update
> >>> SchoolZone expected, got SchoolZone
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations/association_proxy.rb:148:in
`raise_on_type_mismatch''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations/association_collection.rb:141:in
`replace''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations/association_collection.rb:141:in `each''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations/association_collection.rb:141:in
`replace''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations.rb:962:in `school_zones=''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations.rb:972:in `send''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> associations.rb:972:in `school_zone_ids=''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> base.rb:1675:in `send''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> base.rb:1675:in `attributes=''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> base.rb:1674:in `each''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> base.rb:1674:in `attributes=''
> >>>
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/
> >>> base.rb:1594:in `update_attributes''
> >>>
/var/www/html/BostonConnects/app/controllers/schools_controller.rb:
> >>> 57:in `update''
> >>> /usr/bin/mongrel_rails:16:in `load''
> >>> /usr/bin/mongrel_rails:16
>
> >>> The really wierd thing is that this works on my local, which
is a
> >>> Windows XP machine. The error only shows when I deploy it to
our
> >>> Linux test environment. I posted the other code below in the
hopes
> >>> that it helps. Any insight would be appreciated at this
point...
> >>> Many
> >>> thanks in advance. -- Chad
>
> >>> class School < ActiveRecord::Base
> >>> # Relationships
> >>> #has_and_belongs_to_many :users
> >>> has_and_belongs_to_many :services
> >>> has_and_belongs_to_many :school_zones
> >>> has_many :students
> >>> has_many :users
>
> >>> # End Relationships
>
> >>> # Properties
> >>> attr_accessor :email_address_confirmation
>
> >>> def school_zone_names
> >>> if @school_zones.nil?
> >>> school_zones
> >>> end
>
> >>> s = ""
> >>> i = 0
> >>> for schoolzone in @school_zones
> >>> s += i == 0 ? schoolzone.name : ", " +
schoolzone.name
> >>> i += 1
> >>> end
> >>> @school_zone_names = s
> >>> end
>
> >>> def principal_full_name
> >>> @principal_full_name = " #{principal_first_name}
> >>> #{principal_last_name}"
> >>> end
> >>> # End Properties
>
> >>> # Validators
> >>> validates_presence_of :name, :address_one, :city, :state,
:zipcode
> >>> validates_confirmation_of :email_address,
> >>> :if => Proc.new{ |u| !u.email_address.blank? }
> >>> validates_format_of :zipcode,
> >>> :with => /^\d{5}([-|\s]?\d{4})?$/ix,
> >>> :if => Proc.new { |u| !u.zipcode.blank? }
> >>> validates_format_of :email_address,
> >>> :with =>
/^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})
> >>> (\]?)$/ix,
> >>> :if => Proc.new { |u| !u.email_address.blank? }
> >>> validates_format_of :phone_one,
> >>> :with =>
/^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
> >>> ix,
> >>> :message => "is invalid. Must be in the
xxx-xxx-xxxx format.",
> >>> :if => Proc.new { |u| !u.phone_one.blank? }
> >>> validates_format_of :phone_two,
> >>> :with =>
/^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
> >>> ix,
> >>> :message => "is invalid. Must be in the
xxx-xxx-xxxx format.",
> >>> :if => Proc.new { |u| !u.phone_two.blank? }
> >>> validates_format_of :fax,
> >>> :with =>
/^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/
> >>> ix,
> >>> :message => "is invalid. Must be in the
xxx-xxx-xxxx format.",
> >>> :if => Proc.new { |u| !u.fax.blank?}
> >>> # End Validators
>
> >>> # Static Methods
> >>> def School.find_id_and_name
> >>> School.find(:all,
> >>> :select => "schools.id, schools.name",
> >>> :conditions => "schools.active = 1",
> >>> :order => "schools.name")
> >>> end
>
> >>> def School.search(search_term, show_inactive, page,
sort_order)
> >>> page_size = 50
> >>> if (search_term && search_term.empty? == false)
> >>> School.paginate(:per_page => page_size,
> >>> :page => page,
> >>> :conditions => [''schools.active =
'' + show_inactive + '' AND
> >>> schools.name LIKE ?'', "%#{search_term}%"],
> >>> :order => sort_order)
> >>> else
> >>> School.paginate(:per_page => page_size,
> >>> :page => page,
> >>> :conditions => ''schools.active = ''
+ show_inactive,
> >>> :order => sort_order)
> >>> end
> >>> end
> >>> # End Methods
>
> >>> end
>
> >>> class SchoolZone < ActiveRecord::Base
> >>> # Relationships
> >>> has_and_belongs_to_many :schools
> >>> # End Relationship
>
> >>> # Static Methods
> >>> def SchoolZone.find_id_and_name()
> >>> SchoolZone.find(:all,
> >>> :select => "school_zones.id,
school_zones.name",
> >>> :conditions => "school_zones.active = 1",
> >>> :order => "school_zones.name")
> >>> end
> >>> # End Static Methods
> >>> end
>
> >>> class SchoolsController < ApplicationController
> >>> helper :sort
> >>> include SortHelper
> >>> require "form_value"
> >>> helper :search
> >>> include SearchHelper
>
> >>> def index
> >>> list
> >>> render :action => ''list''
> >>> end
>
> >>> # GETs should be safe
(seehttp://www.w3.org/2001/tag/doc/whenToUseGet.html)
> >>> verify :method => :post, :only => [ :create, :update ],
> >>> :redirect_to => { :action => :list }
>
> >>> def list
> >>> search = params[:search]
> >>> sort_init(''name'', :table =>
''schools'')
> >>> sort_update
> >>> search_init
> >>> @schools = School.search(search_term, show_inactive,
> >>> params[:page], sort_clause)
> >>> end
>
> >>> def new
> >>> @school = School.new
> >>> init_form_values()
> >>> end
>
> >>> def create
> >>> @school = School.new(params[:school])
> >>> -b5YJWEM4MkMaSwR9sru3fA@public.gmane.org_by_id =
session[:user_id].to_i
> >>> init_form_values()
>
> >>> if @school.save
> >>> flash[:notice] = ''The record for '' +
@school.name + '' was
> >>> successfully created.''
> >>> redirect_to :action => ''list''
> >>> else
> >>> render :action => ''new''
> >>> end
> >>> end
>
> >>> def edit
> >>> @school = School.find(params[:id])
> >>> init_form_values()
> >>> end
>
> >>> def update
> >>> @school = School.find(params[:id])
> >>> -b5YJWEM4MkMaSwR9sru3fA@public.gmane.org_by_id =
session[:user_id].to_i
> >>> init_form_values()
>
> >>> if
!params[''school''][''school_zone_ids'']
> >>> -cMpdoUrVJPgPBGLndItirw@public.gmane.org_zones.clear
> >>> end
>
> >>> if @school.update_attributes(params[:school])
> >>> flash[:notice] = ''The record for
'' + @school.name + '' was
> >>> successfully saved.''
> >>> redirect_to :action => ''list''
> >>> else
> >>> render :action => ''edit''
> >>> end
> >>> end
>
> >>> private
> >>> def init_form_values()
> >>> @zones = SchoolZone.find_id_and_name()
> >>> @states = FormValue.find_states()
> >>> end
> >>> end
>
> >>> School View:
> >>> <%= error_messages_for ''school'' %>
>
> >>> <!--[form:school]-->
> >>> <table class="form">
> >>> <tr>
> >>> <td class="label"><label
for="school_name"><span
> >>> class="req">*</
> >>> span> School name: </label></td>
> >>> <td><%= form.text_field :name, :class
=>
> >>> "tb", :maxlength => "50"
> >>> %></td>
> >>> </tr>
>
> >>> <tr>
> >>> <td class="label"><label
> >>> for="school_principal_first_name">Principal
> >>> First name: </label></td>
> >>> <td><%= form.text_field
:principal_first_name, :class =>
> >>> "tb", :maxlength => "50"
%></td>
> >>> </tr>
>
> >>> <tr>
> >>> <td class="label"><label
> >>> for="school_principal_last_name">Principal
> >>> Last name: </label></td>
> >>> <td><%= form.text_field
:principal_last_name, :class =>
> >>> "tb", :maxlength => "50"
%></td>
> >>> </tr>
>
> >>> <tr>
> >>> <td class="label"><label
for="school_phone_one">Phone
> >>> one: </
> >>> label></
> >>> td>
> >>> <td><%= form.text_field :phone_one, :class
=>
> >>> "tb", :maxlength =>
> >>> "12" %></td>
> >>> </tr>
>
> >>> <tr>
> >>> <td class="label"><label
for="school_phone_two">Phone
> >>> two: </
> >>> label></
> >>> td>- Hide quoted text -
>
> - Show quoted text -...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Chad
2008-Feb-05 19:34 UTC
Re: Going Insane.... Getting "Type Mismatch Error" on Create & Update
Just in case this is helpful to others, what fixed the issue for me was just to reboot Mongrel. So after much loss of hair and sanity the ol'' reboot did the trick. Thanks Fred for trying to help. On Feb 5, 1:27 pm, Chad <chad.finsterw...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi Fred, > > No luck... Still getting the same message, I came accross another > threadhttp://www.ruby-forum.com/topic/101817(that I think you > participated in) where it was suggested that the active record > association_proxy file that the raise_on_type_mismatch method be > changed to: > > /activerecord-1.15.3/lib/active_record/associations/ > association_proxy.rb:146 > > def raise_on_type_mismatch(record) > unless record.is_a?(eval(@reflection.class_name)) > raise ActiveRecord::AssociationTypeMismatch, > "#...@reflection.class_name} #...@reflection.klass} #{ > record.is_a?(eval(@reflection.class_name)) } expected, got > #{record.class}" > end > end > > I don''t have permission to change this file, but if you think it might > solve it I will work with the Sys Admin. What''s your sense? Also are > there any other workarounds that you know of. At this point it does > not need to be pretty, just work. I really appreciate your help! > > On Feb 5, 12:34 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > > > > On 5 Feb 2008, at 17:12, Chad wrote: > > > > Hi Fred, > > > > Thanks for the reply. A few things: 1) When you say "Either using > > > require_dependency or just removing the requires usually sorts it > > > out." Where should this be added or removed? I tried adding require > > > "school_zone" to the controller and that did not help. Could you be > > > very specific where you think the changes should be made and I will > > > I''d remove any require statement of models in your app. > > > Fred > > > > test them out. And 2) It is not that is working in production mode, > > > rather is working on Windows machine but not the Linux server. Thanks > > > again!! > > > > On Feb 5, 4:48 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > wrote: > > >> On 5 Feb 2008, at 06:16, Chad wrote: > > > >>> Hello, > > > >>> I am really pulling my hair out on this one and so would desperately > > >>> appreciate any help. The application I am building has Schools and > > >>> SchoolZones, both are in a HABTM relationship. On the School view > > >>> there is a list of checkbox for each corresponding SchoolZone that > > >>> School should belong to. When I submit, either for a Create and > > >>> Update action I get the following error. > > > >> Last time I saw something like this it was due to a dependencies > > >> problem: if the problem goes away if you run in production mode, then > > >> the problem is that rails'' automatic class reloading is getting > > >> confused. When i''ve seen this before, the problem has usually been > > >> require statements of models etc..., the require bypassed the magic > > >> class loading stuff and so things got confused. Either using > > >> require_dependency or just removing the requires usually sorts it > > >> out. > > > >> Fred > > > >>> ActiveRecord::AssociationTypeMismatch in SchoolsController#update > > >>> SchoolZone expected, got SchoolZone > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations/association_proxy.rb:148:in `raise_on_type_mismatch'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations/association_collection.rb:141:in `replace'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations/association_collection.rb:141:in `each'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations/association_collection.rb:141:in `replace'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations.rb:962:in `school_zones='' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations.rb:972:in `send'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> associations.rb:972:in `school_zone_ids='' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> base.rb:1675:in `send'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> base.rb:1675:in `attributes='' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> base.rb:1674:in `each'' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> base.rb:1674:in `attributes='' > > >>> /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/ > > >>> base.rb:1594:in `update_attributes'' > > >>> /var/www/html/BostonConnects/app/controllers/schools_controller.rb: > > >>> 57:in `update'' > > >>> /usr/bin/mongrel_rails:16:in `load'' > > >>> /usr/bin/mongrel_rails:16 > > > >>> The really wierd thing is that this works on my local, which is a > > >>> Windows XP machine. The error only shows when I deploy it to our > > >>> Linux test environment. I posted the other code below in the hopes > > >>> that it helps. Any insight would be appreciated at this point... > > >>> Many > > >>> thanks in advance. -- Chad > > > >>> class School < ActiveRecord::Base > > >>> # Relationships > > >>> #has_and_belongs_to_many :users > > >>> has_and_belongs_to_many :services > > >>> has_and_belongs_to_many :school_zones > > >>> has_many :students > > >>> has_many :users > > > >>> # End Relationships > > > >>> # Properties > > >>> attr_accessor :email_address_confirmation > > > >>> def school_zone_names > > >>> if @school_zones.nil? > > >>> school_zones > > >>> end > > > >>> s = "" > > >>> i = 0 > > >>> for schoolzone in @school_zones > > >>> s += i == 0 ? schoolzone.name : ", " + schoolzone.name > > >>> i += 1 > > >>> end > > >>> @school_zone_names = s > > >>> end > > > >>> def principal_full_name > > >>> @principal_full_name = " #{principal_first_name} > > >>> #{principal_last_name}" > > >>> end > > >>> # End Properties > > > >>> # Validators > > >>> validates_presence_of :name, :address_one, :city, :state, :zipcode > > >>> validates_confirmation_of :email_address, > > >>> :if => Proc.new{ |u| !u.email_address.blank? } > > >>> validates_format_of :zipcode, > > >>> :with => /^\d{5}([-|\s]?\d{4})?$/ix, > > >>> :if => Proc.new { |u| !u.zipcode.blank? } > > >>> validates_format_of :email_address, > > >>> :with => /^\S+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4}) > > >>> (\]?)$/ix, > > >>> :if => Proc.new { |u| !u.email_address.blank? } > > >>> validates_format_of :phone_one, > > >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > >>> ix, > > >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > >>> :if => Proc.new { |u| !u.phone_one.blank? } > > >>> validates_format_of :phone_two, > > >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > >>> ix, > > >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > >>> :if => Proc.new { |u| !u.phone_two.blank? } > > >>> validates_format_of :fax, > > >>> :with => /^(\d{3}-?\d{3}-?\d{4})(\s[a-zA-Z0-9\s\.\-\#]{0,15})?$/ > > >>> ix, > > >>> :message => "is invalid. Must be in the xxx-xxx-xxxx format.", > > >>> :if => Proc.new { |u| !u.fax.blank?} > > >>> # End Validators > > > >>> # Static Methods > > >>> def School.find_id_and_name > > >>> School.find(:all, > > >>> :select => "schools.id, schools.name", > > >>> :conditions => "schools.active = 1", > > >>> :order => "schools.name") > > >>> end > > > >>> def School.search(search_term, show_inactive, page, sort_order) > > >>> page_size = 50 > > >>> if (search_term && search_term.empty? == false) > > >>> School.paginate(:per_page => page_size, > > >>> :page => page, > > >>> :conditions => [''schools.active = '' + show_inactive + '' AND > > >>> schools.name LIKE ?'', "%#{search_term}%"], > > >>> :order => sort_order) > > >>> else > > >>> School.paginate(:per_page => page_size, > > >>> :page => page, > > >>> :conditions => ''schools.active = '' + show_inactive, > > >>> :order => sort_order) > > >>> end > > >>> end > > >>> # End Methods > > > >>> end > > > >>> class SchoolZone < ActiveRecord::Base > > >>> # Relationships > > >>> has_and_belongs_to_many :schools > > >>> # End Relationship > > > >>> # Static Methods > > >>> def SchoolZone.find_id_and_name() > > >>> SchoolZone.find(:all, > > >>> :select => "school_zones.id, school_zones.name", > > >>> :conditions => "school_zones.active = 1", > > >>> :order => "school_zones.name") > > >>> end > > >>> # End Static Methods > > >>> end > > > >>> class SchoolsController < ApplicationController > > >>> helper :sort > > >>> include SortHelper > > >>> require "form_value" > > >>> helper :search > > >>> include SearchHelper > > > >>> def index > > >>> list > > >>> render :action => ''list'' > > >>> end > > > >>> # GETs should be safe (seehttp://www.w3.org/2001/tag/doc/whenToUseGet.html) > > >>> verify :method => :post, :only => [ :create, :update ], > > >>> :redirect_to => { :action => :list } > > > >>> def list > > >>> search = params[:search] > > >>> sort_init(''name'', :table => ''schools'') > > >>> sort_update > > >>> search_init > > >>> @schools = School.search(search_term, show_inactive, > > >>> params[:page], sort_clause) > > >>> end > > > >>> def new > > >>> @school = School.new > > >>> init_form_values() > > >>> end > > > >>> def create > > >>> @school = School.new(params[:school]) > > >>> -b5YJWEM4MkMaSwR9sru3fA@public.gmane.org_by_id = session[:user_id].to_i > > >>> init_form_values() > > > >>> if @school.save > > >>> flash[:notice] = ''The record for '' + @school.name + '' was > > >>> successfully created.'' > > >>> redirect_to :action => ''list'' > > >>> else > > >>> render :action => ''new'' > > >>> end > > >>> end > > > >>> def edit > > >>> @school = School.find(params[:id]) > > >>> - Hide quoted text - > > - Show quoted text -... > > read more »--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---