我有课程用户,产品和订单。我有一个共同关注的Logger,我已经包含在每个中。我在Logger模块中有一个after_create回调,它将记录创建。我需要不同类型的类名和日志。
class User
include Logger
attr_accessor :name
end
class Product
include Logger
attr_accessor :name
end
class Order
include Logger
attr_accessor :name
end
我有记录器模块
module Logger
extend ActiveSupport::Concern
included do
after_create :log_event
end
def log_event
puts "#{<some way to get name of the class>} created now."
end
end
我想要“某种方式来获得班级名称”。我试过self.name(返回类的name属性中的值),self.class.name(返回Class),self.downcase(返回错误),self.table_name(返回错误)。请让我知道解决方案。我不必过多改变这种结构。
答案 0 :(得分:2)
与在普通实例方法中获得它的方式相同。
def log_event
puts "#{self.class} created now."
end
您也可以self.class.name
。
答案 1 :(得分:0)
我想我找到了答案。我可以使用self.class.table_name来获取用户,产品等名称,即如果表名不是自定义的
答案 2 :(得分:0)
使用关注点时,您只能使用self.name
而不是self.class
或self.class.name
。
示例:
def log_event
puts "#{self.name} created now."
end