【发布时间】:2019-04-21 20:54:09
【问题描述】:
我的 Rails 项目中有一个类 Product,我正在尝试检索在我的文件中定义的类的实例方法列表(不是继承方法或通过 mixin 包含)。这是我班级的一个小样本:
class Product
include Mongoid::Document
include Mongoid::Paperclip
include Mongoid::Search
include Mongoid::Slug
include Mongoid::Timestamps
extend Enumerize
def product_image
image.url(:small) unless image.nil?
end
def product_school_level
self.school_levels.join ' | '
end
def product_grades
self.grades.where(degree_ids: nil).pluck(:name).uniq.join ' | '
end
end
我尝试使用Product.instance_methods(false)。但是,这仍然会返回很多我不需要的方法,这里有一个小示例:
:_run_post_process_callbacks,
:aliased_fields,
:_post_process_callbacks,
:_run_image_post_process_callbacks,
:_image_post_process_callbacks,
:_validation_callbacks,
:nested_attributes?,
:_run_touch_callbacks,
:readonly_attributes?,
:_run_save_callbacks,
:aliased_fields?,
:_save_callbacks,
:localized_fields?,
:readonly_attributes,
:领域?,
:pre_processed_defaults?,
:_update_callbacks,
:post_processed_defaults?,
:字段,
:_id_default
我在其中一些方法上运行了Product.new.method(:_run_post_process_callbacks).source_location,以尝试检查它们的来源。看来他们都来自active_support。
我从来没有在我的课程中包含 active_support,所以我猜 rails 项目中的类会自动包含 active_supports 方法?如果没有任何继承语法 (
【问题讨论】:
标签: ruby-on-rails ruby inheritance mixins activesupport