5

私のレールアプリには次の懸念があります。

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クラスのクラス側ですでに操作しているため、機能しませんUserUser-class にそのクラスを問い合わせると、Classが返されます。Class.name.downcase.pluralizeただし、「クラス」です。

于 2013-07-01T20:03:11.667 に答える
0

User モデルにメソッドがない限り、次のことがname起こる可能性があります。

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 に答える