Forum: Ruby on Rails Custom Primary Key, Using Primary Key in Form "gives before_

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John Wong (Guest)
on 2006-06-13 10:11
(Received via mailing list)
Hi guys,

I've got a problem here which i need help from the pro's in this mailing
list

I have a legacy app where the User table has a custom structure where
"User_id" (username) is the primary key as well as the username used
to log in

User.rb (model)
class User < ActiveRecord::Base
  set_table_name "cmf901"
  set_primary_key "user_id"
end

Login Controller
class LoginController < ApplicationController
  def login
    @user = User.new
  end
end


When creating a Login form (login.rhtml)
<%= start_form_tag :action => "process" %>
<%= text_field 'user', 'user_id', :MAXLENGTH =>"10" %>
<%= text_field 'user', 'user_password', :MAXLENGTH =>"20" %>
<%= submit_tag "Login" %>
<%= end_form_tag %>


I get an error

NoMethodError in Login#login

Showing app/views/login/login.rhtml where line #11 raised:

undefined method `user_id_before_type_cast' for #<User:0x3cb61e8>

Extracted source (around line #11):

8:   </tr>
9:   <tr>
10: 	<td>Username</td>
11: 	<td><%= text_field 'user', 'user_id', :MAXLENGTH =>"10"  %></td>
12:   </tr>
13:   <tr>
14: 	<td>Password</td>

All i want to do is use the standard rails way to create a login
form(used in Scaffold to create new/update) and do some authentication
Mark Reginald James (Guest)
on 2006-06-14 08:06
(Received via mailing list)
John Wong wrote:

> I have a legacy app where the User table has a custom structure where
> "User_id" (username) is the primary key as well as the username used
> to log in
> ....
> undefined method `user_id_before_type_cast' for #<User:0x3cb61e8>
> 11:     <td><%= text_field 'user', 'user_id', :MAXLENGTH =>"10"  %></td>

<%= text_field 'user', 'id', :maxlength => 10 %> should work, but
you should probably be using a non-AR form helper instead:

<%= text_field_tag 'user_id', params[:user_id], :maxlength => 10 %>

@user = User.find_by_id(params[:user_id])


--
We develop, watch us RoR, in numbers too big to ignore.
John Wong (Guest)
on 2006-06-15 10:53
(Received via mailing list)
Thx! Think that helped a lot..    I guess i'll not use an AR form
helper..
too bad the nice form highlighting and error messages will have to go as
well :(
This topic is locked and can not be replied to.