1. ホーム
  2. ruby-on-rails

[解決済み] Railsです。コントローラクラス名からモデルクラス名を取得するには?

2023-01-22 07:55:21

質問

class HouseBuyersController < ...
  def my_method
    # How could I get here the relevant model name, i.e. "HouseBuyer" ?
  end
end

どのように解決するのですか?

これはそれを行うでしょう。

class HouseBuyersController < ApplicationController

  def index
    @model_name = controller_name.classify
  end

end

これは、コントローラのアクションを抽象化する際によく必要になります。

class HouseBuyersController < ApplicationController

  def index
    # Equivalent of @house_buyers = HouseBuyer.find(:all)
    objects = controller_name.classify.constantize.find(:all)
    instance_variable_set("@#{controller_name}", objects)
  end

end