0

我正在查看 Hartl 的 Rails 教程,虽然我能够在控制台中成功创建用户,但我对当前的反馈感到困惑:

2.0.0-p247 :014 > user.update_attributes name: "Ryan Waits", email: "ryan.waits@gmail.com"
(0.3ms)  begin transaction
User Exists (0.3ms)  # commented out
=> true 
2.0.0-p247 :015 > user
=> #<User id: 2, name: nil, email: nil, # commented out
2.0.0-p247 :016 > user.name
=> "Ryan Waits"

它按应有的方式创建用户,但是为什么我需要专门调用 user.name 或 user.email 以显示他们的值……有人知道吗?

用户模型:

class User < ActiveRecord::Base
 before_save { self.email == email.downcase }
 attr_accessor :name, :email

 validates :name, presence: true
 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
 validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
                        uniqueness: { case_sensitive: false}

 has_secure_password
 validates :password, length: { minimum: 6 }
end

用户控制器:

class UsersController < ApplicationController
 def index
 @user = User.all
end

 def new

 end

 def show
  @user = User.find params[:id]
 end
end

除了显示用户已创建的控制台之外,当我尝试在索引或显示视图上显示它们时,数据库中没有任何用户。

索引错误:

未定义的方法“电子邮件”#

索引视图:

<%= @user.name %>
<%= @user.email %>
4

1 回答 1

0

irb 只是在内存中拥有对象的缓存版本。什么user.reload而不是user告诉你

于 2013-10-29T18:42:39.463 回答