Кажется, что вы новичок в Ruby, а также в Rails. В Ruby класс похож на описание типа объекта (хотя сам класс тоже является объектом). Всякий раз, когда существует определенный класс, вы можете создавать его новые экземпляры, например String.new
. Обратите внимание, что классы всегда имеют заглавные буквы.
Методы класса - это методы, которые работают над самим классом. Вы можете сказать, когда метод является методом класса, потому что он будет привязан к заглавному имени класса (точно так же, как String.new
). С другой стороны, методы экземпляра работают только на экземпляре класса, а не на самом классе (например, str = String.new; str.capitalize!
). Обычно существует больше методов экземпляров, чем методы класса, поскольку экземпляры - это то, над чем вы работаете (new
- наиболее распространенный метод класса, который вы увидите).
Как уже упоминалось, String не является моделью Rails; это базовый класс Ruby. Когда вы работаете в Rails, у вас есть доступ ко всем обычным классам Ruby, а также к другим классам и методам, которые определены в исходном коде Rails. Поэтому String не определен в Rails, но Rails предоставляет некоторые полезные методы экземпляров для строк (например, str.to_date
).
Модель в Rails - это действительно класс Ruby. Чтобы понять работу модели, вы должны убедиться, что вы понимаете, как работают классы Ruby. То, что делает модели Rails особенными, заключается в том, что они наследуются от класса, определенного в исходном коде Rails, известном как ActiveRecord (любой класс в Ruby может наследовать от другого класса, это только один пример этого). ActiveRecord имеет ряд методов класса и экземпляра, которые также доступны для ваших моделей, поскольку они наследуют от ActiveRecord. Например, если у вас есть класс (модель), называемый Person, вы можете автоматически использовать метод класса Person.find(id)
для поиска определенного экземпляра класса Person в базе данных. У вас также есть метод экземпляра person.save
, чтобы сохранить экземпляр в базу данных.
Все это меня сбивало с толку, когда я только начинал, поэтому мой лучший совет - познакомиться с Руби, когда вы изучаете Rails.
Помните, что вы можете позвонить obj.class, например. 'String.class', чтобы узнать, от чего он наследуется. Вы можете продолжить добавление '.class', чтобы вернуться к базовому классу Class Class –
Хорошо, спасибо за подсказку. Где в папке rails я бы определил пользовательский класс? – Linus
Пользовательские классы входят в '/ lib', если они не зависят от моделей или других вещей в'/app' –