# Problem with "Add" with Table with no ID column

**URL:** <https://www.ruby-forum.com/t/problem-with-add-with-table-with-no-id-column/68792>\
**Category:** Rails\
**Created:** [September 15, 2006, 2:56pm UTC](https://www.ruby-forum.com/t/problem-with-add-with-table-with-no-id-column/68792 "2006-09-15T14:56:14Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Philip\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/c5a1d2/32.png) [@Philip\_N](https://www.ruby-forum.com/u/Philip_N)\
**Post date:** [September 15, 2006, 2:56pm UTC](https://www.ruby-forum.com/t/problem-with-add-with-table-with-no-id-column/68792/1 "2006-09-15T14:56:14Z")

</div>

I’ve got a table in my schema which doesn’t have an ID column. Here’s  
the  
migration -

==== START OF CUT OF MIGRATION ==========================  
class CreateCountries \< ActiveRecord::Migration  
def self.up  
create\_table(:countries, :id =\> false, :options =\> ’ IN SFPS001’) do  
|t|  
# t.column :name, :string  
t.column :country\_code, :string, :null =\> false, :limit =\> 2  
t.column :country\_name, :string, :null =\> false, :limit =\> 50  
end  
end

def self.down  
drop\_table :countries  
end  
end  
==== END OF CUT OF MIGRATION ============================

Here’s the model definition -

==== START OF CUT OF MODEL ==============================  
class Country \< ActiveRecord::Base

set\_primary\_key :country\_code  
has\_many :trip\_leg\_passengers, :as =\> :country\_passport  
has\_many :airports

validates\_presence\_of :country\_code, :country\_name  
validates\_uniqueness\_of :country\_code  
validates\_uniqueness\_of :country\_name  
end  
==== END OF CUT OF MODEL ================================

Using the formats in the usual RoR book from Prag Progs, I’ve got the  
list,  
show and edit functionality working. However the “Add” function is not  
working giving the following error dump -

==== START OF CUT OF ERROR OUTPUT ========================  
NoMethodError in Country#new

Showing app/views/country/\_form.rhtml where line #5 raised:

undefined method `country\_code\_before\_type\_cast’ for  
#Country:0xb7414228

Extracted source (around line #5):

2:  
3:   
4:

Country code  
  
5: \<%= text\_field ‘country’, ‘country\_code’ %\>

  
6:  
7: 

Country name  
  
8: \<%= text\_field ‘country’, ‘country\_name’ %\>

Trace of template inclusion: /app/views/country/new.rhtml

RAILS\_ROOT: script/…/config/…  
Application Trace | Framework Trace | Full Trace

/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active\_record/base.rb:178  
9:in `normal_method_missing' /usr/lib/ruby/gems/1.8/gems/dr_nic_magic_models-0.7.1/lib/base.rb:46:in`method\_missing’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:340:in `value_before_type_cast' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_he lper.rb:253:in`to\_input\_field\_tag’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:160:in `text_field' #{RAILS_ROOT}/app/views/country/_form.rhtml:5:in`\_run\_rhtml\_country\_\_form’  
#{RAILS\_ROOT}/app/views/country/new.rhtml:4:in `\_run\_rhtml\_country\_new’

/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active\_record/base.rb:178  
9:in `normal_method_missing' /usr/lib/ruby/gems/1.8/gems/dr_nic_magic_models-0.7.1/lib/base.rb:46:in`method\_missing’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:340:in `value_before_type_cast' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_he lper.rb:253:in`to\_input\_field\_tag’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:160:in `text_field' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:316:in`compile\_and\_render\_template’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:292:in  
`render_template' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:251:in`render\_file’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:266:in  
`render' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/partials.rb:59: in`render\_partial’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:29:in `benchmark' /usr/lib/ruby/1.8/benchmark.rb:293:in`measure’  
/usr/lib/ruby/1.8/benchmark.rb:307:in `realtime' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:29:in`benchmark’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/partials.rb:58:  
in `render_partial' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:278:in`render’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:316:in  
`compile_and_render_template' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:292:in`render\_template’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:251:in  
`render_file' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:7 26:in`render\_file’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/base.rb:6  
48:in `render_with_no_layout' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/layout.rb :245:in`render\_without\_benchmark’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:53:in `render' /usr/lib/ruby/1.8/benchmark.rb:293:in`measure’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:53:in `render' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:9 42:in`perform\_action\_without\_filters’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/filters.r  
b:368:in `perform_action_without_benchmark' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:69:in`perform\_action\_without\_rescue’  
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:69:in`perform\_action\_without\_rescue’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/rescue.rb  
:82:in `perform_action' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:4 08:in`process\_without\_filters’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/filters.r  
b:377:in `process_without_session_management_support' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/session_m anagement.rb:117:in`process’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in  
`dispatch' /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:115:in`handle\_dispatch’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick\_server.rb:81:in  
`service' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in`service’  
/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /usr/lib/ruby/1.8/webrick/server.rb:173:in`start\_thread’  
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:95:in`start’  
/usr/lib/ruby/1.8/webrick/server.rb:92:in `start' /usr/lib/ruby/1.8/webrick/server.rb:23:in`start’  
/usr/lib/ruby/1.8/webrick/server.rb:82:in `start' /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:67:in`dispatch’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/servers/webrick.rb:59  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenc ies.rb:147:in`require’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/server.rb:30  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenci es.rb:147:in`require’  
script/server:3

/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active\_record/base.rb:178  
9:in `normal_method_missing' /usr/lib/ruby/gems/1.8/gems/dr_nic_magic_models-0.7.1/lib/base.rb:46:in`method\_missing’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:340:in `value_before_type_cast' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_he lper.rb:253:in`to\_input\_field\_tag’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/helpers/form\_he  
lper.rb:160:in `text_field' #{RAILS_ROOT}/app/views/country/_form.rhtml:5:in`\_run\_rhtml\_country\_\_form’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:316:in  
`compile_and_render_template' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:292:in`render\_template’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:251:in  
`render_file' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:266:in`render’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/partials.rb:59:  
in `render_partial' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:29:in`benchmark’  
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure' /usr/lib/ruby/1.8/benchmark.rb:307:in`realtime’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:29:in `benchmark' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/partials.rb:58: in`render\_partial’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:278:in  
`render' #{RAILS_ROOT}/app/views/country/new.rhtml:4:in`\_run\_rhtml\_country\_new’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:316:in  
`compile_and_render_template' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:292:in`render\_template’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_view/base.rb:251:in  
`render_file' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:7 26:in`render\_file’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/base.rb:6  
48:in `render_with_no_layout' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/layout.rb :245:in`render\_without\_benchmark’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:53:in `render' /usr/lib/ruby/1.8/benchmark.rb:293:in`measure’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/benchmark  
ing.rb:53:in `render' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:9 42:in`perform\_action\_without\_filters’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/filters.r  
b:368:in `perform_action_without_benchmark' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:69:in`perform\_action\_without\_rescue’  
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmark ing.rb:69:in`perform\_action\_without\_rescue’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/rescue.rb  
:82:in `perform_action' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:4 08:in`process\_without\_filters’  
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action\_controller/filters.r  
b:377:in `process_without_session_management_support' /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/session_m anagement.rb:117:in`process’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in  
`dispatch' /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:115:in`handle\_dispatch’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick\_server.rb:81:in  
`service' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in`service’  
/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /usr/lib/ruby/1.8/webrick/server.rb:173:in`start\_thread’  
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:95:in`start’  
/usr/lib/ruby/1.8/webrick/server.rb:92:in `start' /usr/lib/ruby/1.8/webrick/server.rb:23:in`start’  
/usr/lib/ruby/1.8/webrick/server.rb:82:in `start' /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/webrick_server.rb:67:in`dispatch’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/servers/webrick.rb:59  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenc ies.rb:147:in`require’  
/usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/server.rb:30  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenci es.rb:147:in`require’  
script/server:3

Request

Parameters: None

Show session dump

* * *

:user\_id: 100

flash: !map:ActionController::Flash::FlashHash {}

:original\_uri: /

# Response Headers: {“cookie”=\>[], “Cache-Control”=\>“no-cache”} ==== END OF CUT OF ERROR OUTPUT

I am assuming I have to change something because the primary key is  
COUNTRY\_CODE and there isn’t an ID column. But I can’t work out what.

Any help appreciated.

Phil
