私はMichael HartlのLearn Railsチュートリアルの改訂版で作業しています。私は第6章のモデリングユーザーです。何らかの理由で、ユーザーがActiveRecordで正しく作成されておらず、まったく保存していません。Rails 5:ActiveRecordがレコードを作成していません
私はその後、私はrails db:seed
を実行するが、私は私のrails console
に行けば何のユーザーが作成されていないように、それが表示された私のseeds.rb
ファイル
user_1 = User.create(id: 1, name: 'Han Solo', email: '[email protected]')
user_2 = User.create(id: 2, name: 'Luke Skywalker', email: '[email protected]')
でこれらのユーザーを配置:
Running via Spring preloader in process 24358
Loading development environment (Rails 5.0.0.1)
2.2.2 :001 > User.delete_all
SQL (1.1ms) DELETE FROM "users"
=> 0
2.2.2 :002 >
user.rb
ユーザーモデル
class User < ApplicationRecord
#Ensure Email Uniqueness by Downcasing the Email Attribute
before_save {self.email = email.downcase }
#validates name, presence, and length
validates :name, presence: true, length: { maximum: 100 }
#Validate presence, length, format, and uniqueness (ignoring case)
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: {maximum: 250}, format: {with: VALID_EMAIL_REGEX }, uniqueness: {case_sensitive: false}
#Adds ability to save securely hashed password_digest attribute to database
#Adds a pair of virtual attributes (password and password_confirmation)
#including presence validations upon object creation and a validation
#requiring that they match
#adds authenticate method that returns the user when the password is correct (and false otherwise)
has_secure_password
PASSWORD_FORMAT = /\A
(?=.{8,}) # Must contain 8 or more characters
(?=.*\d) # Must contain a digit
(?=.*[a-z]) # Must contain a lower case character
(?=.*[A-Z]) # Must contain an upper case character
(?=.*[[:^alnum:]]) # Must contain a symbol
/x
validates :password, presence: true, length: {minimum: 8}, format: {with: PASSWORD_FORMAT}
end
schema.rb
ActiveRecord::Schema.define(version: 20161020211218) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
end
end
誰も何が起こっているかもしれない考えている?
あなたのデータベースには既にそのユーザーがいますか? 'valid? 'をチェックすると表示されます。電子メールアドレスがすでに使用されているためfalseを返しています。 – rdubya
実際のgmailアドレスではなく、IANAサンドボックスドメインの '@ example.com'を例に挙げてください。アドレスを所有している誰でも、スパムロボットによって収穫されるのを防ぐことができます。 'user.valid?'を呼び出した後に – max
を呼び出すと、 'user.errors.full_messages'を呼び出して、何が同じものを防ぐのかを確認します。 –