問題タブ [sequel]
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 - Sequel :: Modelを使用して2つのテーブルにページ分割するにはどうすればよいですか?
変更点として、Railsアプリではなく、Ramaze、つまりSequelベースのアプリを使用しています。
結合テーブルを介して、および結合テーブルTag
を介して多対多に関連付けられているモデルがあります。:posts
:taggings
:external_posts
:external_post_taggings
これらの関連付けの両方をまとめて、created_at
各テーブルで呼び出される日付フィールドで並べ替えたいと思います。
ページネーションなしで、私はします:
ただし、ページ付けを使用する必要があります。.postsだけの場合は、次のようにします。
しかし、それが可能であるとしても、2つのテーブルにまたがる方法はわかりません。
ruby - Sequel と Ruby を使用してクエリから返される文字数を制限するにはどうすればよいですか?
私のモデルはArticle
で、記事の本文のスニペットだけを表示して、この特定の記事のプレビューを表示したいと考えています。
Sequelでそれを行うにはどうすればよいですか?
を使用している可能性があると思いましたがlimit
、それはデータベースから返されるレコードの数を制限するだけです。
理想的には、次のようなことをしたいと思います: Article.first.limit(40)
40 は最初の 40 文字です。
うまくいかないことはわかってlimit
いますが、探しているものを説明するための例として使用しています。
編集1:
シナトラを使用しています。ルーティング ファイルではなく、ビューから返される値を制限したかったのです。
ルーティング ファイルで次のようにします。
type のすべてのセクションのリストが表示されますa
。
次に、記事にたどり着くために、次のことを行います。
このシナリオに基づいて、返される「name」属性のサイズを制限したいと考えています。
しかし、それを行うと、次のエラーが発生します。
name
属性のサイズを制限できるようにするにはどうすればよいですか?
sql - 定数の続編フォーマット、selectでの関数呼び出し?
その一部として関数呼び出しと定数を含み、エイリアスを使用するSequelデータセットを作成する方法を理解しようとしています。select
私は適切な構文に固執しています。
生のSQLの挿入を避けようとしていますが、結果のデータセットをチェーンして生のSQL内の列エイリアスを参照できる限り、挿入する必要があります。
私の実際のクエリはもっと複雑です(実際には呼び出していませんsin
。これは関数呼び出しの単なる例です)が、説明のために、SQLで実行しようとしていることの簡略版を次に示します。
同等の、理想的な、続編は何でしょうか?これまでのところ:
ruby - Sequel でテーブル ビューのメソッドを作成するにはどうすればよいですか?
Sequel でテーブル ビューを作成し、ファイルに入れましたdb_views.rb
。
「ファット モデル シン コントローラー」の実践に従うために、:bn_view
.
ruby - Sequel 関連付けでテーブルを動的に選択するにはどうすればよいですか?
A
とという 2 つのモデル間に 1 対 1 の関連付けを作成しようとしていますB
。モデルB
は、存在するFoo
場合は table Foo
、またはBar
他のすべての状況では table のいずれかに存在できます。
:dataset
one_to_one 関連付けメソッドのフラグを使用して機能させようとしましたが、循環依存関係を導入せずに機能させる方法がわかりません。
Sequel 関連付けでこれを達成する方法はありますか? それとも、SQL を手書きするのが最善の方法でしょうか?
sql - SQLクエリが読み取り専用であることを確認してください
SQLクエリがデータベースのデータを変更しないようにするための最良の方法は何でしょうか。
私のシナリオでは、データベースレイヤーにアクセスできず、アプリケーションレイヤーでのみこのロジックを実行できます。
宝石、ルビーカスタムスクリプトの使用をお勧めしますか?
ruby - カーソルまたはスマート フェッチを使用する Ruby ORM はありますか?
ActiveRecord を置き換える Ruby ORM を探しています。Sequel と DataMapper を見てきました。それらは非常によく見えますが、必要のないときにすべてをメモリにロードしないという基本的なことを行っているようには見えません。
つまり、多くの行を持つテーブルの ActiveRecord と Sequel で次の (または同等の) ことを試しました。
二人とも記憶に夢中です。必要に応じてフェッチするのではなく、すべてをメモリにロードするようです。ActiveRecord でを使用しfind_in_batches
ましたが、受け入れられる解決策ではありません。
- 問題が多すぎるため、ActiveRecord は受け入れられるソリューションではありません。
コードでページング メカニズムを認識する必要があるのはなぜですか? ページのサイズをどこかに設定できてうれしいですが、それだけです。次のようなこと
find_in_batches
をする必要があります。post.find_in_batches { |バッチ| batch.each { |p| p を置きます } }
しかし、それは透明であるべきです。
では、フェッチを適切に行う信頼できる Ruby ORM はどこかにありますか?
アップデート:
Sergioが述べたように、Rails 3では、find_each
まさに私が望むものを使用できます。ただし、ActiveRecord はオプションではないため、誰かが本当にそれを使用するよう説得できる場合を除き、質問は次のとおりです。
- find_each と同等の機能をサポートする ORM はどれですか?
- どうやってするの?
find_each
whileが必要なのはなぜfind
ですか?
ruby - nginxでPhusionPassengerに取り組んでいる間、SequelDB接続に適した場所
私はSinatra+Sequelを使用してrubyで書かれたテストアプリを持っています。
config.ru:
コード例:
テスト環境でPhusionPassengerを使い始めるまでは、すべて問題ありませんでした。nginx error.logに例外があります:
Sequel :: DatabaseError-RuntimeError:接続はフォークされたプロセスで再利用できません。
DB接続ルーチンをラックアップファイルconfig.ruに配置するのは正しいことですか、それとも別の方法で行う方が良いですか?アプリケーションコードから接続を正しく呼び出す方法よりも最初のバリアントの場合はどうなりますか?
PS:アプリコードで接続を開いて続行できることは知っていますがpassenger_spawn_method conservative
、速度とリソース使用量の問題があるため、私が探している方法ではありません。
mysql - Heroku db:push->欠落している続編の宝石
ローカルのMySQLデータベースをHerokuのClearDBMySQLデータベースにプッシュしようとしています。私は宝石の紛失などの多くのエラーを経験し、1つで立ち往生しています。私が実行している:
確認のためにアプリケーション名を入力するように求められます。その後、次のような多くのエラーが発生します。
Sequel gemがインストールされていて、正しいバージョン(3.20.0)であるため、これは奇妙です。私はすべての宝石を完全に再インストールしようとしましたが、それでも運がありませんでした。
ruby-on-rails - トランザクション テーブルから最新のエントリを取得するにはどうすればよいですか?
これは、通常の AREL または Sequel の gem ベースのモデルとは少し「すぐに使える」ものなので、専門家のガイダンスを探しています。
何かがデプロイされるたびに更新される、アプリの外部にあるレガシー (トランザクション) テーブルがあります。Deployments
次のようになります。
上記のマークされた線は、DEPLOY_ID
一意のAPP_DEPLOY_NAME + DEPLOY_TYPE + DOMAIN + DEPLOY_ENV
エントリごとの最高値を表しています。概念的には、これらはこれら4 つの値によって定義される複合キーの最新の展開です。
SQL では、自己結合を使用してこのビューを簡単に作成できます。
(おそらくもっと良い書き方がありますが、それは私がやろうとしていることを示しています)
ただし、これはクエリチェーンの利点を失います...つまり、次のようなものを取得できないようです: latest.filter(:APP_DEPLOY_NAME.like('%adn%'))
。
その他のシワ:
- 私はデータベースを所有していないので、ビューを追加できません。
- 独自のテーブルを作成する場合、データの更新について心配する必要があります (トランザクション テーブルはライブであり、継続的に更新されます)。
何か案は?