До версии 5 Rails генерировал модели, унаследованные от ActiveRecord::Base
.
# rails g model foo.
class Foo < ActiveRecord::Base
end
В Rails 5 введено ApplicationRecord
, что является моделью, эквивалентной ApplicationController
. Итак, на Rails 5 генерируется следующее:
# rails g model foo.
class Foo < ApplicationRecord
end
Сам класс ApplicationRecord генерируется при запуске rails new
.
Однако в этом нет ничего волшебного - это просто суперкласс, заложенный в конвенциях.
# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Если вы получаете NameError: uninitialized constant ApplicationRecord
, вы либо обновились до Rails 5, не создавая его, либо удалили его по ошибке. Решение состоит в том, чтобы просто создать файл.