問題タブ [active-relation]

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.

0 投票する
14 に答える
84986 参照

ruby-on-rails - ActiveRecord クエリ ユニオン

Ruby on Rail のクエリ インターフェイスを使用して、(少なくとも私にとっては) いくつかの複雑なクエリを作成しました。

これらのクエリは両方とも、単独で正常に機能します。どちらも Post オブジェクトを返します。これらの投稿を 1 つの ActiveRelation に結合したいと考えています。ある時点で何十万もの投稿が存在する可能性があるため、これはデータベース レベルで行う必要があります。MySQL クエリの場合は、単純にUNION演算子を使用できます。RoR のクエリ インターフェイスで同様のことができるかどうかは誰にもわかりませんか?

0 投票する
1 に答える
208 参照

ruby-on-rails-3 - Rails 3.x で middlemodel を介して 2 つのモデルをリンクする

私はまだ正しい用語を知らないので、正しい答えを見つけるのが難しいと思います.

そこで、Exhibit と Category でエンジンを作成しました。展示物を複数のカテゴリに割り当てるために、3 番目のモデルのカテゴリ化を作成しました。これには、exhibit_id と category_id のみが含まれます。

私がやりたいのは、カテゴリごとにページを作成することなので、展示物をニュース カテゴリに割り当てて「ニュース」ページに表示し、写真カテゴリに割り当てて「写真」ページに表示するなどです。これはルーティング構成だと思いますが、まだ到達していません (ただし、本当にルーティング構成かどうか教えてください)。

私の問題は、1 つのコントローラーのみから、異なるモデルからフィールドを取得する方法です。私が持っているもの:

に属する:fotoの を取得するにはどうすればよいですか?Exhibit:category =>"News"

モデルを追加しようとしましたscope :news, where(['category_id="1"'])が、Categorization取得できますCategorization.newsが、この展示品の写真とどのように接続できますかCategorization.exhibit_id(これは だと思いますExhibit.foto)。

どこから始めたらいいのかわからない...

皆さん、ありがとうございました...

ペトロス

0 投票する
2 に答える
206 参照

ruby-on-rails - Rails:コメント付きのメッセージを並べ替える方法は?

メッセージには複数のコメントを含めることができます。

次の名前付きスコープは、指定された時間範囲で作成されたメッセージを、作成時間の順に(最新のものから)返します。

特定の時間範囲で作成された投稿(メッセージ自体またはそのコメントの1つ)を持つメッセージを、最新の投稿の作成時間(最新のもの)の順に並べて返す名前付きスコープを作成するにはどうすればよいですか?

例:

次のメッセージが存在する場合:

それから

戻る必要があります:

Message 3投稿は2010年2月より前に作成されたため、含まれていません。 Message 2最新の投稿(2011年8月)があるため、最初になります。

0 投票する
2 に答える
526 参照

ruby-on-rails - アクティブな関係: 関連付けを通じてレコードを取得していますか?

私は次のモデルを持っています:

目標は@user.survey_takings.last_survey_taken、コントローラーから呼び出すことができるようにすることです。@user.survey_takings(これは不自然ですが、それに合わせてください。一般的な目標は、関連するサーベイでリレーションを使用できるクラス メソッドを呼び出せるようにすることです。)

現在の形式では、このコードは機能しません。surveys_takenを呼び出すと、ActiveRelation が配列に折りたたまれます.map(&:survey)。代わりに、参加したすべての調査の関係を返す方法はありますか? 私はこれを行うことはできません:

@user.survey_takings.surveys_taken. _ _ _ @user_

私が欲しいのは

しかし、からその surveys_taken 関連付けにアクセスできませんSurveyTaking.last_survey_taken

0 投票する
1 に答える
4904 参照

ruby-on-rails - Rails の 2 つのクラス間の複数の belongs_to 関係

私はトランザクションクラスを持っています。このクラスの各オブジェクトには、1 つの発行アカウント、1 つの送信アカウント、および 1 つの受信アカウントが含まれます。これらはそれぞれ Account クラスのインスタンスです。私のトランザクション テーブルには、issuer_id、sender_id、および receiver_id があります。

呼び出すことができるように、トランザクションとアカウントの間の関係をどのように指定する必要がありますか

ありがとうございました。

0 投票する
2 に答える
678 参照

activerecord - rake db:create 実行時の Arel Deprecation 警告

mysql2 v 0.2.6 を使用して Rails 3.1 でアプリを作成しようとしています。を実行するrake db:createと、次のエラーが表示されます。

MySQL モニターにアクセスできるので、gem は正しくインストールされているようです。ここで他に何が起こっているのでしょうか?

ありがとう!

0 投票する
1 に答える
110 参照

ruby-on-rails - :from に相当する ActiveRelation (arel) は何ですか?

モデルの 1 つにこの named_scope があります。

その目的は、最後の 100 のビデオのプールを作成することです (その結果を「ビデオ」として返すため、他のスコープはそのデータセットで動作します)。その後、スコープをチェーンし、その結果のプールからレコードをフィルター処理できます。

Arel に相当するステートメントはありますか?

0 投票する
1 に答える
18227 参照

ruby-on-rails-3 - Ruby on Rails - 2 つのテーブルを結合するには?

1 対多の関係で 2 つのテーブル (件名とページ) があります。サブジェクトとページから基準を追加してSQLを解析したいのですが、進行が非常に遅く、しばしば問題が発生します。私はレールが初めてなので、助けてください。

被験者のサンプル データ。以下に 3 つの列を示します。

ページ内のサンプル データ。以下に列を示します。

subject.id がわからないので、件名とレベル、ページ名しかわかりません。これが私が生成したいSQLです(または同じ結果を達成する同様のもの):

結果に 2 つの行が表示されることを期待しています。

これは非常に単純な sql ですが、Rails で欲しいものを得ることができませんでした。


1 つ目のステートメント: subject = Subject.where(:name => 'Math', :level => 2) 2 つ目のステートメント: subject.joins(:pages).where(['pages.name LIKE ?', '%Division'] )

質問:

  1. チェーン SQL の結果は実際には 2 行を返しますが、subject.size は 1 しか示していませんか?
  2. :pages からも列を返すようにするにはどうすればよいですか?
  3. subject.to_sql がまだステートメント 1 の SQL のみを表示するのはなぜですか? なぜステートメント 2 のチェーン SQL が含まれていないのですか?
  4. 基本的に、上記のように sql を解析する (または同じ結果を得る) には、ステートメントを別の方法で記述する必要がありますか?

どうもありがとう。

0 投票する
3 に答える
3950 参照

ruby - RailsActiveRelationをハッシュに

ActiveRelationをハッシュ化する必要があります!たとえば、私はそのようなARを持っています

MyTableの主キーをハッシュのキーとして使用してハッシュを作成する簡単な方法はここにあります

例1:

例2: