[解決済み] Array Rails ActiveRecordで例外なくwhere IDを選択する方法
2022-04-28 05:32:28
質問
のようなidの配列がある場合
ids = [2,3,5]
を実行します。
Comment.find(ids)
はすべて正常に動作します。しかし、存在しないidがある場合、例外が発生します。これは通常、あるフィルタにマッチするIDのリストを取得し、次のようなことを行ったときに発生します。
current_user.comments.find(ids)
今回は、有効なコメントIDがあるかもしれませんが、指定したユーザーに属していないため、見つからず、例外が発生します。
試しに
find(:all, ids)
しかし、それはすべてのレコードを返します。
今、私ができる唯一の方法は
current_user.comments.select { |c| ids.include?(c.id) }
しかし、それは超非効率的なソリューションのように思えます。
を選択する良い方法はないでしょうか? 配列のID 存在しないレコードで例外を発生させることなく?
どのように解決するのですか?
例外を回避するだけなら、"find_all_by.." 関数群が例外を発生させることなく動作します。
Comment.find_all_by_id([2, 3, 5])
は、いくつかの ID が存在しない場合でも動作します。 これは
user.comments.find_all_by_id(potentially_nonexistent_ids)
の場合も同様です。
更新情報 Rails 4
Comment.where(id: [2, 3, 5])
関連
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] rails/rubyでgroup_byを使用する。
-
[解決済み] Rails: カラムからユニークな値を選択する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Ruby on RailsのActiveRecordのマイグレーションで、長すぎるインデックス名を処理するには?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Rails 3.1 を使用して、「ページ固有」の JavaScript コードをどこに置くか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する