HTML Diff
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 &gt; ?", 45).select(:email)<p>Дефолтный скоуп:</p>
11 User.customers.where("age &gt; ?", 45).select(:email)<p>Дефолтный скоуп:</p>
12 class User &lt; ApplicationRecord # ... scope :admins, -&gt; { where(role: 'admin') } default_scope { admins } end # У модели установлен дефолтный скоуп, выбираются только админы User.all.count # 32 # Выбор пользователей без скоупов User.unscoped.all.count # 100
12 class User &lt; ApplicationRecord # ... scope :admins, -&gt; { where(role: 'admin') } default_scope { admins } end # У модели установлен дефолтный скоуп, выбираются только админы User.all.count # 32 # Выбор пользователей без скоупов User.unscoped.all.count # 100