1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>У моделей в рельсе есть следующие методы</p>
1
<p>У моделей в рельсе есть следующие методы</p>
2
<h3>Создание</h3>
2
<h3>Создание</h3>
3
-
admin = User.create(first_name: 'John', last_name: 'Doe', role: 'admin') user = User.new(first_name: 'Tom', last_name: 'Smith', role: 'customer') user.save<h3>Чтение</h3>
3
+
admin = User.create(first_name: 'John', last_name: 'Doe', role: 'admin')<h3>Чтение</h3>
4
users = User.all user = User.first user = User.find(1) user = User.find_by(id: 1) user = User.last users = User.where(name: 'John', is_admin: true).order(created_at: :desc)<h3>Обновление</h3>
4
users = User.all user = User.first user = User.find(1) user = User.find_by(id: 1) user = User.last users = User.where(name: 'John', is_admin: true).order(created_at: :desc)<h3>Обновление</h3>
5
user = User.find(1) user.update(first_name: 'Jane', last_name: 'Doe') user = User.find(1) user.update!(first_name: 'Jane', last_name: 'Doe') User.where(is_active: true).update_all(is_active: false)<p>update_attribute обновляет один атрибут объекта и сохраняет изменения, игнорируя валидацию. Используйте его с осторожностью, так как он может привести к сохранению некорректных данных.</p>
5
user = User.find(1) user.update(first_name: 'Jane', last_name: 'Doe') user = User.find(1) user.update!(first_name: 'Jane', last_name: 'Doe') User.where(is_active: true).update_all(is_active: false)<p>update_attribute обновляет один атрибут объекта и сохраняет изменения, игнорируя валидацию. Используйте его с осторожностью, так как он может привести к сохранению некорректных данных.</p>
6
user = User.find(1) user.update_attribute(:first_name, 'Jane')<p>update_columns обновляет указанные атрибуты в базе данных, не вызывая валидацию и не обновляя временные метки</p>
6
user = User.find(1) user.update_attribute(:first_name, 'Jane')<p>update_columns обновляет указанные атрибуты в базе данных, не вызывая валидацию и не обновляя временные метки</p>
7
user = User.find(1) user.update_columns(first_name: 'Jane', last_name: 'Doe')<h3>Удаление</h3>
7
user = User.find(1) user.update_columns(first_name: 'Jane', last_name: 'Doe')<h3>Удаление</h3>
8
user = User.find_by(name: 'John') user.destroy User.destroy_all<h3>Запросы</h3>
8
user = User.find_by(name: 'John') user.destroy User.destroy_all<h3>Запросы</h3>
9
User.where.not(role: :admin) User.where(role: :admin).or(User.where(role: :superuser)) User.order(:age) User.order(age: :desc) User.select(:first_name, :last_name) User.select(:last_name).distinct User.limit(15) User.limit(15).offset(30) User.group(:age).count User.none<h3>Скоупы</h3>
9
User.where.not(role: :admin) User.where(role: :admin).or(User.where(role: :superuser)) User.order(:age) User.order(age: :desc) User.select(:first_name, :last_name) User.select(:last_name).distinct User.limit(15) User.limit(15).offset(30) User.group(:age).count User.none<h3>Скоупы</h3>
10
<p>Применение скоупа на выборку:</p>
10
<p>Применение скоупа на выборку:</p>
11
User.customers.where("age > ?", 45).select(:email)<p>Дефолтный скоуп:</p>
11
User.customers.where("age > ?", 45).select(:email)<p>Дефолтный скоуп:</p>
12
class User < ApplicationRecord # ... scope :admins, -> { where(role: 'admin') } default_scope { admins } end # У модели установлен дефолтный скоуп, выбираются только админы User.all.count # 32 # Выбор пользователей без скоупов User.unscoped.all.count # 100
12
class User < ApplicationRecord # ... scope :admins, -> { where(role: 'admin') } default_scope { admins } end # У модели установлен дефолтный скоуп, выбираются только админы User.all.count # 32 # Выбор пользователей без скоупов User.unscoped.all.count # 100