[解決済み] ActiveRecord::Baseを拡張するRails
2022-04-25 06:25:13
質問
ActiveRecord:Baseクラスを拡張して、モデルに特別なメソッドを持たせる方法について、いくつか読みました。このクラスを拡張する簡単な方法(ステップバイステップのチュートリアル)は何ですか?
どのように解決するのですか?
いくつかのアプローチがあります。
ActiveSupport::Concernを使用する(推奨)
を読む ActiveSupport::Concern のドキュメントを参照してください。
というファイルを作成します。
active_record_extension.rb
の中に
lib
ディレクトリを作成します。
require 'active_support/concern'
module ActiveRecordExtension
extend ActiveSupport::Concern
# add your instance methods here
def foo
"foo"
end
# add your static(class) methods here
class_methods do
#E.g: Order.top_ten
def top_ten
limit(10)
end
end
end
# include the extension
ActiveRecord::Base.send(:include, ActiveRecordExtension)
にファイルを作成します。
config/initializers
というディレクトリを作成します。
extensions.rb
を作成し、そのファイルに以下の行を追加してください。
require "active_record_extension"
継承(優先)
Tobyの 回答 .
モンキーパッチ(避けるべき)
にファイルを作成します。
config/initializers
というディレクトリに
active_record_monkey_patch.rb
.
class ActiveRecord::Base
#instance method, E.g: Order.new.foo
def foo
"foo"
end
#class method, E.g: Order.top_ten
def self.top_ten
limit(10)
end
end
正規表現に関する有名な言葉 ジェイミー・ザウィンスキー は、モンキーパッチに関連する問題を説明するために再利用することができます。
<ブロッククオート問題に直面したとき、「そうだ、これを使おう」と考える人がいます。 モンキーパッチ 今、彼らは2つの問題を抱えています。
モンキーパッチは簡単で早い。しかし、節約した時間と労力は必ず戻ってきます。 将来的には複利で。最近は、railsコンソールで素早く解決策をプロトタイプ化するために、モンキーパッチに制限をかけています。
関連
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み] Rails DBの移行 - テーブルを削除するには?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Railsの:includeと:joinsの比較
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】RailsでActiveRecordモデルとそのテーブルの名前を変更するマイグレーションはどのように記述するのですか?
-
[解決済み】ActiveRecordのFloatとDecimalの比較
-
[解決済み] ActiveRecordのランダムレコード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController