[解決済み] Rails 4でhas_many :through :uniqを使用すると非推奨の警告が出る。
2023-01-26 03:27:39
質問
Rails 4では、has_many :through で :uniq => true を使用すると、非推奨の警告が出るようになりました。例えば
has_many :donors, :through => :donations, :uniq => true
次のような警告が出ます。
DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following:
has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'
should be rewritten as the following:
has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'
上記のhas_many宣言を書き換える正しい方法は何ですか?
どのように解決するのですか?
この
uniq
オプションはスコープブロックに移動する必要があります。スコープブロックは、2番目のパラメータとして
has_many
の 2 番目のパラメータである必要があることに注意してください (つまり、行末に置いておくことはできず、その前に移動する必要があります)。
:through => :donations
の部分の前に移動する必要があります)。
has_many :donors, -> { uniq }, :through => :donations
奇妙に見えるかもしれませんが、複数のパラメータがある場合を考えると、少しは納得がいくでしょう。たとえば、このように。
has_many :donors, :through => :donations, :uniq => true, :order => "name", :conditions => "age < 30"
になります。
has_many :donors, -> { where("age < 30").order("name").uniq }, :through => :donations
関連
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Devise Admin Roleの追加【終了しました
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]
-
[解決済み] Rails I18n バリデーション非推奨の警告
-
[解決済み] Rails 4のhas_manyとorderの非推奨の警告
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] rails/rubyでgroup_byを使用する。
-
[解決済み] 未初期化の定数 "コントローラ名"