0

I implemented a signin/out machinery as Michael Hartl suggested in his tutorial (http://ruby.railstutorial.org/chapters/sign-in-sign-out). All worked perfectly: creating, deleting, updating user from a profile page.

Then I created a Teacher model as a subclass of User (STI). It hasn't its own validation and should use the same validation as parent model (user). But updating attributes for user with type = "Teacher" is no more possible (for the others users it continues to work). When I compile the update form it returns:

`error messages say me teacher.attributes.password is missing validation

while the teacher should inherit the same validation of user.

In routes.rb, after the creation of the teacher model I added:

 resources :teachers, :controller => 'users', :type => "Teacher"

This is the update method in the user controller:

def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
   redirect_to @user   ...

If I change @user.update_attributes(params[:user]) to @user.update_attributes(params[:teacher]) It works, but obviously only for teacher.

I think the solution is quite easy but I'm a novice. Any help would be appreciated!

fabbrro
  • 125
  • 7

1 Answers1

0

I solved my problem thanks to the solution proposed by d11wtq here:

Is subclassing a User model really bad to do in Rails?

I edited the Teacher model like this:

class Teacher < User

def self.model_name

User.model_name

end

end

Community
  • 1
  • 1
fabbrro
  • 125
  • 7