问题描述
抱歉,标题有点令人困惑,但我刚刚发现了一些令人难以置信的东西。当您在类方法中调用类方法时,您不必在它之前放置 self
以使其执行。我不明白为什么会这样。
例如,假设您有一个具有以下架构的模型 Food
类:
create_table "foods",force: :cascade do |t|
t.string "name",null: false
t.string "food_type",null: false
t.datetime "expiration_date",null: false
t.datetime "created_at",precision: 6,null: false
t.datetime "updated_at",null: false
end
class Food < ApplicationRecord
def self.output_new
new(name: 'marshmallow',food_type: 'snack')
end
end
不是写 Food.new
或 self.new
,只需写 new
返回一个新创建的实例。使用 Eigenclass 语法编写方法也会产生相同的结果。这不仅限于 new
,而且几乎适用于所有适用的类方法,例如 create,delete,instance_methods
等。
我已经搜索过为什么会这样,但我真的不明白。有人能解释一下为什么会发生这种情况以确保我没有出现幻觉吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)