ruby-on-rails - 什么是 active_record 实例方法?
问题描述
我的 Rails 应用程序中有公司模型。其中包括以下字段:
class Company < ApplicationRecord
include Validatable
validates :contact_one, :city, :state, :country, :address, presence: true
validates :email, presence: true, uniqueness: true
has_many :company_domains
has_many :domains, through: :company_domains
has_many :job_posts
has_many :contacts
has_many :images, as: :imageable
belongs_to :industry, optional: true, counter_cache: true
belongs_to :user, optional: true
def pending_approval?
self.status == 'in-review'
end
def approved?
self.status == 'approved'
end
end
# == Schema Information
#
# Table name: companies
#
# id :integer not null, primary key
# address :string
# city :string
# company_domains_count :integer
# company_size :string
# contact_one :string
# contact_two :string
# contacts_count :integer
# country :string
# cover_image :string
# email :string
# facebook_url :string
# fax :string
# google_plus_url :string
# job_posts_count :integer
# latitude :float
# linkedin_url :string
# logo_image :string
# longitude :float
# name :string
# state :string
# status :string
# twitter_url :string
# website :string
# year_of_establishment :date
# youtube_url :string
# created_at :datetime not null
# updated_at :datetime not null
# industry_id :integer
# user_id :integer
当我将Company.instance_methods(false)检查到 rails 控制台时,我得到了以下实例方法数组:
[:after_add_for_images?, :after_add_for_images=, :before_remove_for_images, :before_remove_for_images?, :before_remove_for_images=, :after_remove_for_images, :after_remove_for_images?, :after_remove_for_images=, :belongs_to_counter_cache_after_update, :autosave_associated_records_for_industry, :autosave_associated_records_for_user, :autosave_associated_records_for_company_domains, :validate_associated_records_for_company_domains, :before_add_for_company_domains, :before_add_for_company_domains?, :before_add_for_company_domains=, :after_add_for_company_domains, :after_add_for_company_domains?, :after_add_for_company_domains=, :before_remove_for_company_domains, :before_remove_for_company_domains?, :before_remove_for_company_domains=, :after_remove_for_company_domains, :after_remove_for_company_domains?, :after_remove_for_company_domains=, :autosave_associated_records_for_domains, :validate_associated_records_for_domains, :before_add_for_domains, :before_add_for_domains?, :before_add_for_domains=, :after_add_for_domains, :after_add_for_domains?, :after_add_for_domains=, :before_remove_for_domains, :before_remove_for_domains?, :before_remove_for_domains=, :after_remove_for_domains, :after_remove_for_domains?, :after_remove_for_domains=, :autosave_associated_records_for_job_posts, :validate_associated_records_for_job_posts, :before_add_for_job_posts, :before_add_for_job_posts?, :before_add_for_job_posts=, :after_add_for_job_posts, :after_add_for_job_posts?, :after_add_for_job_posts=, :before_remove_for_job_posts, :before_remove_for_job_posts?, :before_remove_for_job_posts=, :after_remove_for_job_posts, :after_remove_for_job_posts?, :after_remove_for_job_posts=, :autosave_associated_records_for_contacts, :validate_associated_records_for_contacts, :before_add_for_contacts, :before_add_for_contacts?, :before_add_for_contacts=, :after_add_for_contacts, :after_add_for_contacts?, :after_add_for_contacts=, :before_remove_for_contacts, :before_remove_for_contacts?, :before_remove_for_contacts=, :after_remove_for_contacts, :after_remove_for_contacts?, :after_remove_for_contacts=, :autosave_associated_records_for_images, :validate_associated_records_for_images, :before_add_for_images, :before_add_for_images?, :before_add_for_images=, :after_add_for_images]
谁能帮我理解这些方法会做什么?
解决方案
这些是来自的关联回调
关联回调 普通回调与 Active Record 对象的生命周期挂钩,允许您在各个点使用这些对象。例如,您可以使用 :before_save 回调在保存对象之前使某些事情发生。
关联回调与普通回调类似,但它们是由集合生命周期中的事件触发的。有四个可用的关联回调:
before_add after_add before_remove after_remove
推荐阅读
- python - 为什么 python 可能会将我的字典解释为列表?
- java - 如何知道内存中的主要场景是什么?
- python - 通过 Keras 模型可视化绘图决策边界
- encoding - 将 2 个 4 位数字存储在 1 个 8 位数字中
- python - 从目录中的所有文件中删除exif
- c++11 - 为什么类模板中的成员函数在同一个地址创建同一个对象
- javascript - 单击按钮时无法更改输入框的值
- swift - SwinjectStoryboard - 是否可以加载/注入其 ViewController 存在于另一个项目的不同框架中的故事板?
- c# - C# 将文本框内容分配给数组的特定元素会导致某些元素为空
- javascript - 新 div 中的每个单词