2

请帮忙!

我是 ruby​​ on rails 的初学者。

我正在将简单 Web 表单中的值更新到 sqlite3 数据库中。

问题是只有电子邮件和密码字段被插入到表中。first_name、last_name 等显示值“nil”

我正在使用 DEVISE 进行身份验证设置。

这是我的 user.rb 代码:

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

attr_accessible :email, :password, :password_confirmation, :remember_me,
                  :first_name, :last_name, :profile_name
end

我的网络表单中的代码

<div><%= f.label :first_name %><br />
    <%= f.text_field :first_name %></div>

  <div><%= f.label :last_name %><br />
    <%= f.text_field :last_name %></div>
     <div><%= f.label :profile_name %><br />
    <%= f.text_field :profile_name %></div>

以及我的迁移文件夹中的代码摘录:

def changed
    create_table(:users) do |t|
      t.string :first_name
      t.string :last_name
      t.string :profile_name

 t.string :email,              :null => false, :default => ""
 t.string :encrypted_password, :null => false, :default => ""

请帮忙!!!

4

2 回答 2

0

首先,Devise 的 Github 页面实际上有一些关于如何安装和工作的非常好的信息。还有一个关于 Devise 的 RailsCast

您似乎对 Devise 的工作原理感到非常困惑,我强烈建议您复习一下!


移民

首先,Devise 创建了自己的迁移,其中包含很多列。这是由 Devise 在您的 Ruby CMD 中使用以下命令生成的:

rails generate devise:install
rails generate devise MODEL

运行后一个命令后,运行:

rake db:migrate

这将允许您创建数据库,然后您只需创建视图:

rails generate devise:views

这将创建登录、注册和其他视图,这些视图用于帮助保持身份验证在您的应用程序上运行。

于 2013-10-14T09:28:25.540 回答
0

在 rails4 中支持强参数,并且在 Rails4 中不推荐使用 attr_accessible。所以添加以下代码并尝试运行我希望这会对你有所帮助。

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.

  before_filter :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:firstname, :lastname, :email, :password, :password_confirmation) }
  end

  protect_from_forgery with: :exception
end
于 2013-10-14T09:51:15.230 回答