[解決済み] オブジェクトの配列をActiveRecord::Relationに変換する
質問
オブジェクトの配列があります。
Indicator
. 私はIndicatorクラスのメソッド(def self.subjects
のもの、スコープなど)をこの配列に対して実行したいのです。オブジェクトのグループに対してクラスメソッドを実行する唯一の方法は、オブジェクトをActiveRecord::Relationにすることです。そのため、私は結局
to_indicators
メソッドを
Array
.
def to_indicators
# TODO: Make this less terrible.
Indicator.where id: self.pluck(:id)
end
時には、クラスメソッドの中で、結果を絞り込むためにこれらのスコープをかなり多く連鎖させます。そのため、ActiveRecord::Relationのメソッドを呼び出しても、そのオブジェクトにアクセスする方法はわかりません。そのオブジェクトの中身にアクセスできるのは
all
. しかし
all
は配列です。そこで、その配列をActiveRecord::Relationに変換する必要があるんだ。例えば、これはあるメソッドの一部です。
all.to_indicators.applicable_for_bank(id).each do |indicator|
total += indicator.residual_risk_for(id)
indicator_count += 1 if indicator.completed_by?(id)
end
これは2つの質問に凝縮されていると思います。
-
オブジェクトの配列をActiveRecord::Relationに変換するにはどうすればよいですか? できれば
where
を毎回行わないでください。 -
を実行すると
def self.subjects
型のメソッドを実行する場合、そのActiveRecord::Relationオブジェクト自体にどのようにアクセスすればよいですか。
ありがとうございます。何か明らかにしなければならないことがあれば、教えてください。
どのように解決するのですか?
<ブロッククオートオブジェクトの配列をActiveRecord::Relationに変換するにはどうすればよいですか?できれば、毎回whereを実行しないでください。
Relationは単なるSQLクエリのビルダーであり、そのメソッドは実際のデータには作用しないため、ArrayをActiveRecord::Relationに変換することはできません。
しかし、もしあなたが欲しいものがリレーションであるならば
-
は、ActiveRecord 3.xでは
all
を呼び出さず、代わりにscoped
と同じレコードを表す Relation を返します。all
と同じレコードを表すRelationを返します。 -
ActiveRecord 4.xの場合、単純に
all
を呼び出すだけで、Relationが返されます。
を実行するとき
def self.subjects
型のメソッドを実行する場合、そのActiveRecord::Relationオブジェクト自体にどのようにアクセスすればよいですか?
メソッドがRelationオブジェクト上で呼び出された場合。
self
はリレーションです(定義されているモデルクラスとは対照的です)。
関連
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] heroku open - no app specified
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] Railsでグループとカウント
-
[解決済み] 未初期化の定数 "コントローラ名"
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み】空の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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController