Custom Primary Key, Using Primary Key in Form "gives before_


#1

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:
9:


10: Username
11: <%= text_field ‘user’, ‘user_id’, :MAXLENGTH =>“10” %>
12:
13:
14: Password

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


#2

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:

<%= text_field ‘user’, ‘user_id’, :MAXLENGTH =>“10” %>

<%= 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.


#3

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 :frowning: