Сегодня я создал новое приложение Rails 4. Что-то я делал много раз. Создана базовая модель пользователя, рассмотренная здесь.Rails NoMethodError при сгребании
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true, length: { maximum: 50 }
validates :email, presence: true, length: { maximum: 100 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
add_index :users, :email, unique: true
has_secure_password
validates :password, length: { minimum: 6 }
end
Я выполнил эту миграцию с rake db:migrate
:
class AddIndexToUsersEmail < ActiveRecord::Migration
def change
add_index :users, :email, unique: true
end
end
Мой schema.rb показывает, что миграция работала:
ActiveRecord::Schema.define(version: 20150714015826) do
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"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
end
Но когда я пытаюсь проверить в консоли рельсы, чтобы проверить модель пользователя, я получаю NoMethodError: undefined method add_index
. Я пробовал просто откидываться назад и переносить миграцию, но никаких изменений. Метод определен правильно в моем class User < ActiveRecord::Base
, и он перенесен в db.
Мне интересно, если я использую sqlite3 для разработки и pg для развертывания (heroku), что-то может быть испорчено в этом отношении, но я недостаточно опыт на этом фронте, чтобы лучше знать. Я могу предоставить свой gemfile, если это поможет.