Railsスコープに複数の条件を追加するにはどうすればよいですか?

クリスチャン・オルーク

私はしばらくこれを探していて、答えを見つけることができないようですが、私よりもRailsの経験が豊富であれば、かなり簡単に修正できるはずだと思います。製品モデルに複数のdefault_scope条件を追加しようとしています。私の製品モデルファイルは次のとおりです。

class Product < ApplicationRecord
    has_many :order_items
    default_scope { where(active: true) }
    validates :name,  presence: true, length: { maximum: 300 }
    PRICE_REGEXP = /\A\d{1,4}(\.\d{0,2})?\z/
    validates :price, presence: true,
                      numericality: true,
                      format: { with: PRICE_REGEXP }
    validates :description, presence: true, length: { maximum: 1000 }, 
                            allow_nil: true
end

私も追加したい

default_scope -> { order(created_at: desc) }

製品インデックスページの新製品が最新のものから順になるようにします。次のような操作を行うと、構文エラーメッセージが表示されます。

default_scope -> { order(created_at: desc) }, { where(active: true) }

または

default_scope -> { order(created_at: desc), where(active: true) }

または

default_scope -> { order(created_at: desc) where(active: true) }

これはおそらく私が理解していない構文上の問題であることを私は知っています。誰かがこれを修正する方法について私にアドバイスを与えることができれば、それは大いにありがたいです!ありがとう!

CドットStrifeVII

あなたがやろうとしているのはこれだと思います

default_scope -> { where(active: true).order(created_at: :desc)  }

つまり、事実上、構文の問題が発生しただけです。彼らが新しいラムダスコープ構文をrailsに追加したとき、関数型プログラミングの起源のために、多くのRuby開発者には少し馴染みがありませんでした(与えられたrailsはオブジェクト指向言語です)。事実上、コードのセグメントは{}ブロックのよう機能し、内部のコードを実行します。このwhere句は、スコープが宣言されているモデルで暗黙的に呼び出されwhereます。この句は、渡された属性によってリレーション内のレコードを並べ替えるメソッドActiveRecordを実装するリレーションオブジェクト(つまり、データベースレコードのコレクション)を返しますorderケースcreated_at)は、渡されたパラメータに基づいて降順(desc)または昇順(asc)になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Rails button_toに複数のクラスと属性を追加するにはどうすればよいですか?

分類Dev

1つの地域に複数のビーコンを追加するにはどうすればよいですか?

分類Dev

aspnetコアIDに複数のIDストアを追加するにはどうすればよいですか?

分類Dev

Laravelクエリに複数の条件を動的に追加するにはどうすればよいですか?

分類Dev

複数の条件で適切なforループを作成するにはどうすればよいですか?

分類Dev

複数のパンダDataFrameをループに追加するにはどうすればよいですか?

分類Dev

1つの列に複数の条件を追加するにはどうすればよいですか?

分類Dev

複数の条件でケースを実行するにはどうすればよいですか?

分類Dev

xcodebuildに複数のスキームを追加するにはどうすればよいですか?

分類Dev

PayloadValidatingInterceptor Springsに複数のスキーマを追加するにはどうすればよいですか?

分類Dev

SQLクエリに複数のAND条件を追加するにはどうすればよいですか?

分類Dev

if ステートメントに複数の条件を含めるにはどうすればよいですか?

分類Dev

Linuxで1つのコマンドで複数のユーザーをグループに追加するにはどうすればよいですか?

分類Dev

複数のWHERE条件を追加するにはどうすればよいですか

分類Dev

forループの同じ変数にリストを追加するにはどうすればよいですか?

分類Dev

海生まれのストリッププロットに複数のマーカーを追加するにはどうすればよいですか?

分類Dev

VIMの複数の行にコメントを追加するにはどうすればよいですか?

分類Dev

ActiveRecordのSUMにwhereスコープを追加するにはどうすればよいですか?

分類Dev

Laravel 5のリレーションシップにデフォルトのスコープ/条件を追加するにはどうすればよいですか?

分類Dev

条件によってjson_encode関数に複数のオプションを追加するにはどうすればよいですか?

分類Dev

Bashスクリプトのループに複数の数値を追加するにはどうすればよいですか?

分類Dev

select ステートメントに追加の条件を追加するにはどうすればよいですか?

分類Dev

複数の条件で「if」コマンドを使用するにはどうすればよいですか?

分類Dev

複数の画像にコンテンツを追加するにはどうすればよいですか?

分類Dev

関数からグローバルスコープに複数の変数を移動するにはどうすればよいですか?

分類Dev

forループで複数のスレッドを開始するにはどうすればよいですか?

分類Dev

jQueryで複数のクラスをループするにはどうすればよいですか?

分類Dev

プログラムで複数のファイルにVBAコードを追加するにはどうすればよいですか?

分類Dev

ggplotの複数行の横にテキストを追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    Rails button_toに複数のクラスと属性を追加するにはどうすればよいですか?

  2. 2

    1つの地域に複数のビーコンを追加するにはどうすればよいですか?

  3. 3

    aspnetコアIDに複数のIDストアを追加するにはどうすればよいですか?

  4. 4

    Laravelクエリに複数の条件を動的に追加するにはどうすればよいですか?

  5. 5

    複数の条件で適切なforループを作成するにはどうすればよいですか?

  6. 6

    複数のパンダDataFrameをループに追加するにはどうすればよいですか?

  7. 7

    1つの列に複数の条件を追加するにはどうすればよいですか?

  8. 8

    複数の条件でケースを実行するにはどうすればよいですか?

  9. 9

    xcodebuildに複数のスキームを追加するにはどうすればよいですか?

  10. 10

    PayloadValidatingInterceptor Springsに複数のスキーマを追加するにはどうすればよいですか?

  11. 11

    SQLクエリに複数のAND条件を追加するにはどうすればよいですか?

  12. 12

    if ステートメントに複数の条件を含めるにはどうすればよいですか?

  13. 13

    Linuxで1つのコマンドで複数のユーザーをグループに追加するにはどうすればよいですか?

  14. 14

    複数のWHERE条件を追加するにはどうすればよいですか

  15. 15

    forループの同じ変数にリストを追加するにはどうすればよいですか?

  16. 16

    海生まれのストリッププロットに複数のマーカーを追加するにはどうすればよいですか?

  17. 17

    VIMの複数の行にコメントを追加するにはどうすればよいですか?

  18. 18

    ActiveRecordのSUMにwhereスコープを追加するにはどうすればよいですか?

  19. 19

    Laravel 5のリレーションシップにデフォルトのスコープ/条件を追加するにはどうすればよいですか?

  20. 20

    条件によってjson_encode関数に複数のオプションを追加するにはどうすればよいですか?

  21. 21

    Bashスクリプトのループに複数の数値を追加するにはどうすればよいですか?

  22. 22

    select ステートメントに追加の条件を追加するにはどうすればよいですか?

  23. 23

    複数の条件で「if」コマンドを使用するにはどうすればよいですか?

  24. 24

    複数の画像にコンテンツを追加するにはどうすればよいですか?

  25. 25

    関数からグローバルスコープに複数の変数を移動するにはどうすればよいですか?

  26. 26

    forループで複数のスレッドを開始するにはどうすればよいですか?

  27. 27

    jQueryで複数のクラスをループするにはどうすればよいですか?

  28. 28

    プログラムで複数のファイルにVBAコードを追加するにはどうすればよいですか?

  29. 29

    ggplotの複数行の横にテキストを追加するにはどうすればよいですか?

ホットタグ

アーカイブ