He creado un modelo User
como se muestra a continuación:
#app/models/user.rb
class User < ActiveRecord::Base
attr_accessor :name, :email
email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence=>true, :length => { :maximum => 50 }
validates :email, :presence=>true, :format => {:with => email_regex},
:uniqueness => {:case_sensitive => false}
end
El siguiente es el código de migración:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps null: false
end
end
end
Después de invocar la migración, cuando creo Filas en la base de datos, no agrega el campo de nombre y correo electrónico en la base de datos.
Esto es lo que he probado:
us1=User.create!(:name=>"Test1",:email=>"[email protected]")
(0.0ms) begin transaction
User Exists (0.0ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
SQL (0.0ms)INSERT INTO "users" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2015-04-28 14:30:18.874632"], ["updated_at", "2015-04-28 14:30:18.874632"]]
(109.2ms) commit transaction
=> #<User id: 1, name: nil, email: nil, created_at: "2015-04-28 14:30:18", updated_at: "2015-04-28 14:30:18">
Versión de Ruby y Rails: Rieles: 4.2.1 Rubí: 2.0.0p643
¿Qué hay de malo con el Modelo y la migración o con mi aplicación?
- doptimusprime
SourceEliminar la línea
attr_accessor :name, :email
Puesto que ya agregó estas columnas en la migración. (Rails generará automáticamente los métodos apropiados a partir del esquema de la base de datos).