application_controller.rbは、このクラスからすべて継承しているので、すべてのコントローラで使用可能にしたいすべてのメソッドなどを置くことができると思います。すばらしいです。モデルのApplicationControllerに相当するRails
しかし、モデルと同等のものは何ですか?言い換えれば、私は、私のモデルが継承するいくつかのスーパークラスを作ることができる場所がほしいと思う。
たとえば、私は、MYSqlのREGEXPを介してすべてのCAPSのエントリの異なるテーブルを検索するメソッドを持っています。メソッドを一度しか作成せずに、別のテーブルやモデルを呼び出すことができるようにしたいと思います。
これを行うRailsの方法は何ですか?
ActiveRecord :: Base(すべてのモデルがそうであるように)から継承するクラスを作成し、メソッドをそこに配置し、そのクラスからすべてのモデルを継承できると思っていました。しかし、確かにそれを行うためのより良い方法だろうと思った。
ありがとうございました。セミヨンの答えパー
編集
私が使用していたルートを表示するポストを編集しています。それが動作するようになりました:Configで
# models/dvd.rb
require 'ModelFunctions'
class Dvd < ActiveRecord::Base
extend ModelFunctions
...
end
# lib/ModelFunctions.rb
module ModelFunctions
def detect_uppercase(object)
case object
...
where("(#{field} COLLATE utf8_bin) REGEXP '^[\w[:upper:]]{5,}' ").not_locked.reorder("LENGTH(#{field}), #{table}.#{field} ASC")
end
end
/application.rb
config.autoload_paths += %W(#{config.root}/lib)
'require 'を使わないでくださいmodel_common'' - ' include ModelCommon'; http://stackoverflow.com/questions/318144/what-is-the-difference-between-include-and-require-in-ruby – Thilo
Thiloさん、ありがとうございました。あなたの答えのリンクはrequireを使用すると言いました。それが私が試した理由ですそれ。しかし、ModelCommonを含めると、このエラーが発生します: 'ModelCommon'を定義するために'期待される.../app/models/model_common.rb '。私はあなたがファイルを '必要とする 'と思って、メソッドを'インクルード'しました。それは間違っていますか? – kakubei