Création du modèle Rails ActiveRecord à partir de params hash

La plupart des Rails de tutoriels montrent comment remplir un modèle de classe via les paramètres de hachage comme suit:

class UsersController < ApplicationController   
    def create
        @user = User.create(params[:user])

        # more logic for saving user /redirecting /etc.     
    end  
end

Cela fonctionne très bien si tous les attributs de votre modèle sont censés être des chaînes de caractères. Cependant, qu'advient-il si certains de ces attributs sont censés être des entiers ou des dates ou d'un autre type?

Par exemple, imaginons que l'Utilisateur de la classe ressemble à ceci

class User < ActiveRecord::Base
    attr_accessible :email, :employment_start_date, :gross_monthly_income
end

L' :e-mail attribut doit être une chaîne de caractères, l' :employment_start_date attribut doit être une date, et l' :gross_monthly_income doit être un nombre décimal. Pour que ces attributs du type correct, ce que je dois changer mon contrôleur de l'action à ressembler à quelque chose comme ceci à la place?

class UsersController < ApplicationController  
    def create
        @user = User.new
        @user.email = params[:user][:email]
        @user.employment_start_date = params[:user][:employment_start_date].convert_to_date
        @user.gross_monthly_income = params[:user][:gross_monthly_income].convert_to_decimal

        # more logic for saving user /redirecting /etc.
    end
end

source d'informationauteur Kevin Pang