問題タブ [arel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - カプセル化されたスコープを維持する ActiveRecord
私には 2 つのモデルがfoo
ありbar
、 にfoo
は多くの がありbars
ます。
Bar
は一定期間発生するイベントなので、ActiveRecord::Relation
現在アクティブなバーを持つ foo を表す を返すメソッドまたはスコープが必要です。
Foo
これは、スコープを持つクラスでは簡単です。
これについて私が気に入らないのはfoo
、 の内部について非常に多くのことを知る必要があるということですbar
。
おそらく にスコープを追加することで、これを書き直すことができるbar
ので、属性foo
について知る必要はありませんか?bar
sql - has_many 関係で最新のオブジェクトを熱心に読み込むにはどうすればよいですか?
カテゴリや投稿などのモデルを持つ Rails 3 アプリがあります。
カテゴリー
has_many :投稿
役職
所属先:カテゴリ
ループして各カテゴリのデータベースにアクセスしたり、カテゴリごとに 1 つの投稿だけを引き戻したりすることなく、最新の投稿がその横にリストされたカテゴリのリストを表示できるようにしたいと考えています。
この質問が提起するのと同じことをしたい-SQL結合:1対多の関係で最後のレコードを選択する-ただし、できればActive Recordを使用します。
これはばかげたことですか?カテゴリのすべての投稿を熱心に読み込んで戻す必要がありますか? 私はパフォーマンスが気になったので、これを研究し始めました。
ruby-on-rails - Rails3の関連リレーションでスコープなしを使用するには?
情報セキュリティの制約により、製品の既定のスコープがあります。
ただし、関連付けられている Photo モデルでは、表示されてはならない製品も検索する必要があります。
他の場合では、default_scope をバイパスするためにunscopedProduct.unscoped.find_by_title('abc')
を使用できます。でも:
レコードの関連付けを使用するときにスコープを削除するには?
my_photo.unscoped.product
my_photo には というメソッドがないため意味がありませんunscoped
。すでに nil である可能性があるため、どちらもmy_photo.product.unscoped
意味がありません。my_photo.product
ruby-on-rails-3 - 最高価格のレコードを見つける方法は?
これは、完全なレコードではなく、最大値を返します。
そして現在、私は次のような記録を見つけました:
これは正しい方法ですか?上記を機能させるには 2 つの SQL ステートメントが必要であり、どういうわけか正しくないからです。
Ps。さらに、複数のレコードに同じ「最大」値がある場合は、最新のupdated_at
値を持つレコードを取得する必要があります。それは別の SQL ステートメントを意味するのでしょうか??
pps。Rails の AREL および非 AREL に関する優れたリファレンスまたは詳細なリファレンスを知っている人はいますか? Rails Guide for ActiveRecord クエリだけでは十分ではありません!
(私はRails3を使用しています)
===更新===
AREL を使用して、次のことを行います。
しかし、これは完全な記録ではなく、最大値を与えるだけです:(
また、maximum()
本当にARELの使用はありますか?
ruby-on-rails-3 - 関連付けでスコープを使用する
だから私は、含まれる関連付けにスコープを適用したいというクレイジーなアイデアを思いつきました。これは私が理解したものであり、うまく機能しているようです:
問題は、それが本当に鈍いということです。Race でスコープを定義し (他の場所で使用するため)、それを Event の関連付けで使用するには、Race で 2 つのメソッドが必要です。スコープごとに。
パターンをプラグインなどにラップできると確信していますが、可能であればネイティブの AR/ARel を使用したいと考えています。それを行うためのアイデアはありますか?
ruby-on-rails-3 - モデル内でスコープされていない rails3 は、default_scope によってオーバーライドされます
私はこのモデルを持っています
ユーザー.rb
と
ORDER BY users.created_at DESC, users.ranking DESC
それでも私は...を含むto_sqlを取得します
誰かが理由を説明できますか?
このモデルを使用するすべてのコントローラーから unscoped を呼び出す必要はありません。
ありがとう!
ruby-on-rails - railsアクティブレコードの選択
Q:1つのクエリですべての投稿と関連するコメントを選択し、コメントの関係をp.commentsにロードしますが、コメントからタイトルのみを選択します
役職
コメント
必要なもの:1つのクエリですべての投稿と関連するコメントを選択し、コメントの関係をp.commentsにロードしますが、コメントからタイトルのみを選択します。
最初の部分が.includesによって行われる場合:
=>SELECT posts
。id
AS t0_r0 、posts
。title
AS t0_r1 、posts
。text
AS t0_r2 、posts
。created_at
AS t0_r3 、posts
。updated_at
AS t0_r4 、comments
。id
AS t1_r0 、comments
。title
AS t1_r1 、comments
。text
AS t1_r2 、comments
。post_id
AS t1_r3 、comments
。created_at
AS t1_r4 、comments
。updated_at
AS t1_r5 FROM posts
LEFT comments
OUTERJOINON comments
。post_id
= posts
。id
selectを完全に無視します。
では、参加してみましょう。
=> SELECT posts。*、comments.title FROM posts
INNERJOINON 。= 。comments
comments
post_id
posts
id
より良いですが、テーブルエイリアスが必要です-Railsはリレーションを処理しません(なぜですか?)
=> SELECTposts。*、comments.title ascomments_title FROM posts
INNERJOINON 。= 。comments
comments
post_id
posts
id
OK、ARelを試してみましょう
=>SELECT posts
。id
、posts
。title
、comments
。id
、comments
。title
内部posts
結合comments
からcomments
。post_id
= posts
。id
同じ話-ActiveRecordはリレーションを処理しません。
助言がありますか?
UPD
この質問が直接的な解決策ではない場合は、いくつかのARメソッドを使用して結果のクエリを変換する方法があるかもしれません。なぜなら、ARはARelを使用し、それに対してfind_by_sqlを呼び出してから、魔法をかけます。これは、いつ実行されたかを見つけることができず、ビオラ:生成されたエイリアスと読み込みの関連付けです。
たぶん、1対1の関係の解決策はありますか?
投稿=Post.select('posts.id、posts.title、comments.id、comments.title')。includes(:comment)posts.first.comment.loaded?#true
=>SELECT posts
。id
AS t0_r0 、posts
。title
AS t0_r1 、posts
。text
AS t0_r2 、posts
。created_at
AS t0_r3 、posts
。updated_at
AS t0_r4 、comments
。id
AS t1_r0 、comments
。title
AS t1_r1 、comments
。text
AS t1_r2 、comments
。post_id
AS t1_r3 、comments
。created_at
AS t1_r4 、comments
。updated_at
AS t1_r5 FROM posts
LEFT comments
OUTERJOINON comments
。post_id
= posts
。id
ruby-on-rails-3 - Rails3HABTM-交差点エンティティにアクセス
Rails 3の多対多の関連付け(HABTM)の多態的な関係を概算しようとしています。
交差テーブル(user_favorites)には、user_id、favorite_id、favorite_classのフィールドがあります。
Userクラスでは、関係を定義しています。
データを取得する場合、これは期待どおりに機能します。残念ながら、この定義では、必要なfavorite_class'値(この状況では' User')は追加されません。
レコードを保存する前に、おそらくArelを使用して、favorite_classフィールドを目的の値に設定する方法はありますか?
ruby-on-rails - Rails3でのDBクエリ
ARel1を使用してRails3でこれらのクエリをどのように記述しますか
。
2.2。
クエリの!=とNOTIN部分の書き方がわかりません。
ruby-on-rails - 注文しようとすると、ActiveRecord/Arel クエリが奇妙な結果に解決される
私は、MySQL から、より厳格で Rails にあまり適していないと思われる PostgreSQL への移行を試みています。
私はこの面白い難問に直面しています:
しかし...
これは、追加ORDER BY vendors.id
するだけで有効な PostgreSQL クエリとして問題なく機能するという事実にもかかわらずです。それを追加するだけでなく、非常に面白いことを行い、一日の終わりに無効なクエリを生成します。
私が見るべき手がかりはありますか?