MST

星途 面试题库

面试题:Ruby on Rails 控制器中如何处理参数并进行数据验证

在Ruby on Rails项目的控制器里,假设你有一个用户注册的功能,需要接收用户名、邮箱和密码等参数。请描述如何在控制器中获取这些参数,并且使用Ruby on Rails提供的验证机制对邮箱格式和密码长度等进行验证,给出关键代码示例。
17.1万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
  1. 获取参数: 在Rails控制器中,可以通过params哈希来获取参数。假设注册表单提交的参数遵循Rails的约定,例如params[:user][:username]params[:user][:email]params[:user][:password]。以下是在控制器方法中获取这些参数的示例:
    def register
      @username = params[:user][:username]
      @email = params[:user][:email]
      @password = params[:user][:password]
    end
    
  2. 验证邮箱格式和密码长度: 首先,假设你有一个User模型,在模型中定义验证。
    class User < ApplicationRecord
      validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }
      validates :password, presence: true, length: { minimum: 6 }
    end
    
    在控制器中,创建一个User实例并进行验证:
    def register
      @user = User.new(
        username: params[:user][:username],
        email: params[:user][:email],
        password: params[:user][:password]
      )
      if @user.valid?
        # 保存用户等逻辑
        @user.save
        redirect_to success_path, notice: '注册成功'
      else
        render :new, status: :unprocessable_entity, alert: '注册失败,请检查输入'
      end
    end