如何在关注点(或模块中)访问模型名称?

Max*_*Max 5 ruby-on-rails

我在rails应用程序中有以下问题:

module Authenticable
  extend ActiveSupport::Concern

  included do
    # ...
  end

  module ClassMethods
    def quoted_table_name
      self.class.name.downcase.pluralize # returns "classes"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我有一个用户类:

class User
  include Authenticable
end
Run Code Online (Sandbox Code Playgroud)

然后我想User.quoted_table_name回来"users".目前,User.quoted_table_name退货"classes".我也试过以下,但没有改变.

def quoted_table_name
  Proc.new { self.class.name.downcase.pluralize }.call
end
Run Code Online (Sandbox Code Playgroud)

tes*_*ssi 5

请尝试以下方法:

module Authenticable
  ...

  module ClassMethods
    def quoted_table_name
      name.downcase.pluralize # returns "users"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

self.class.name.downcase.pluralize不起作用,因为我们已经在User-class 的类侧操作.当询问User-class的类时,Class返回.Class.name.downcase.pluralize然而,是"班级".