5

我的 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

如果我有一个用户类:

class User
  include Authenticable
end

那我就想User.quoted_table_name回去了"users"。目前,User.quoted_table_name退货"classes"。我也尝试了以下,但没有任何改变。

def quoted_table_name
  Proc.new { self.class.name.downcase.pluralize }.call
end
4

2 回答 2

5

尝试以下操作:

module Authenticable
  ...

  module ClassMethods
    def quoted_table_name
      name.downcase.pluralize # returns "users"
    end
  end
end

self.class.name.downcase.pluralize不起作用,因为我们已经在User-class 的类端进行了操作。当向User-class 询问其类时,Class返回。Class.name.downcase.pluralize但是,是“类”。

于 2013-07-01T20:03:11.667 回答
0

除非您name的 User 模型中有一个方法,否则这很可能会发生:

def name
  [first_name, last_name].join
end

所以你可以使用self.table_name如下:

module Authenticable
  ...

  module ClassMethods
    def quoted_table_name
      self.table_name # returns "users"
    end
  end
end
于 2015-08-31T23:06:36.097 回答