ruby-on-rails ruby ruby-on-rails-4 localhost railstutorial.org

ruby on rails - Solicitud de registro constante no inicializada



ruby-on-rails ruby-on-rails-4 (2)

Estoy trabajando en el libro tutorial de rieles en línea y recibo el siguiente mensaje de error cuando voy a http: // localhost: 3000 /

"ApplicationRecord constante no inicializada"

y me da el siguiente código resaltando la primera línea.

class User < ApplicationRecord attr_accessor :remember_token before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = //A[/w+/-.]+@[a-z/d/-.]+/.[a-z]+/z/i validates :email, presence: true, length: { maximum: 255 },

Aquí está mi archivo application.html.erb:

<!DOCTYPE html> <html> <head> <title><%= full_title(yield(:title)) %></title> <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> <%= csrf_meta_tags %> <%= render ''layouts/shim'' %> </head> <body> <%= render ''layouts/header'' %> <div class="container"> <% flash.each do |message_type, message| %> <div class="alert alert-<%= message_type %>"><%= message %></div> <% end %> <%= yield %> <%= render ''layouts/footer'' %> <%= debug(params) if Rails.env.development? %> </div> </body> </html>

Y mi archivo user.rb:

class User < ApplicationRecord attr_accessor :remember_token before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = //A[/w+/-.]+@[a-z/d/-.]+/.[a-z]+/z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } has_secure_password validates :password, presence: true, length: { minimum: 6 } # Returns the hash digest of the given string. def User.digest(string) cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost BCrypt::Password.create(string, cost: cost) end # Returns a random token. def User.new_token SecureRandom.urlsafe_base64 end # Remembers a user in the database for use in persistent sessions. def remember self.remember_token = User.new_token update_attribute(:remember_digest, User.digest(remember_token)) end # Returns true if the given token matches the digest. def authenticated?(remember_token) return false if remember_digest.nil? BCrypt::Password.new(remember_digest).is_password?(remember_token) end # Forgets a user. def forget update_attribute(:remember_digest, nil) end end


Parece que estás utilizando el tutorial de Rails 5, pero trabajando con Rails 4. En Rails 5 todos los modelos heredan de ApplicationRecord , mientras que Rails 4 de ActiveRecord::Base

Solución inmediata:

class User < ActiveRecord::Base ... end

Solución a largo plazo, cambie a Rails 5 y aprenda con Rails 5


Refiriéndose a la respuesta de infused de https://.com/a/41388844/5598043

Cree un nuevo archivo llamado app / models / application_record.rb con los siguientes contenidos:

clase ApplicationRecord <ActiveRecord :: Base self.abstract_class = true end