問題タブ [datamapper]

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 投票する
2 に答える
564 参照

php - 単純なモデルは Zend_Db_Row (本質的に Active Record) を拡張することはできますか?

ドメイン モデルとデータ マッパーが OOP スノブの選択であることは知っています (Martin Fowler が自称するように、補完的な方法で「スノブ」を使用します) - ただし、ファウラーでさえPOEAA で次のように述べています

「Active Record は、複雑すぎないドメイン ロジックに適しています...」

製品と請求書のドメイン モデルが単純で、モデル化するテーブル/オブジェクト/概念が多すぎず、関係もそれほど複雑ではありません。では、これは Active Record の適切な使用例でしょうか?

Fowler はまた、アクティブ レコードは行データ ゲートウェイに似ていると述べていますが、アクティブ レコードにはドメイン ロジックがあるという違いがあります。

これが Active Record の有効な使用例であり、Zend が Row Data Gateway を提供しているため、(単純にテーブル名を追加するのではなく) これらのオブジェクトをインテリジェントに拡張するソリューションは、Zend Framework を使用して Active Record オブジェクトを作成する良い方法のように思えます。 . 実際、その概念はこの SO answer で説明されていますこれは、Zend Framework 内に Active Record を実装する方法として受け入れられますか?

もちろん、その質問に対する最も一般的な回答はBill Karwin (Zend の Db 実装に取り​​組んだ)によるもので、 orを使用しないことを推奨しています (少なくとも私はそう読みました)。Zend_Db_TableZend_Db_Row

問題のドメイン モデルがより複雑になった場合、Data Mapper ソリューションに移行したいという希望を完全に受け入れます。私はさまざまな ORM/DataMappers を見てきました (問題のドメイン モデルだけでなく、最近 OOP 設計パターンについて詳しく読んでいます) が、いくつかの点では多すぎるように思えます。

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

ruby - Datamapper から始まる連想問題

Datamapper (および Sinatra) に飛び込んでいて、関連付けについて質問があります。以下は私が持っているいくつかのモデルです。これは私が実装したいものです。Workoutitems と Workout に問題があります。ワークアウトは個別に管理されますが、Workoutitems には各行に関連付けられた 1 つのワークアウトがあります。

  1. ワークアウト - ワークアウトの種類のリスト (ランニング、リフト、シットアップなど)
  2. 選択されたワークアウト - これは、一連のワークアウトの名前と、ユーザーとトレーナーによるメモです。N個のワークアウトアイテムのコレクションがあります
  3. Workoutitems - これには、ワークアウト セットに含まれるワークアウトとその反復回数が必要です。

    /li>
0 投票する
3 に答える
330 参照

nhibernate - 関係が定義されていないデータベースで ORM を使用していますか?

ある程度定義された主キーを持つ100以上のテーブルで構成されるデータベース(MSSQL 2005)を考えてみましょう。テーブル間には「関係」がありますが、これらは外部キー制約では強制されません。

私が扱っている典型的なタイプのテーブルの次の単純化された例を考えてみましょう。User テーブルと City テーブル、Province テーブルの間には明確な関係があります。ただし、重要な問題は、テーブルのデータ型と命名規則に一貫性がないことです。

このデータ ソースを使用するアプリケーション (ASP.net MVC) を MVC ストアフロントと同様の設計で書き直すことを検討しています。しかし、私は概念実証段階を経ており、これは私が遭遇したつまずきの 1 つです。

  1. 簡単に使用できる ORM の選択に関して、どのようなオプションがあり、その理由は何ですか?

  2. ORMを検討する必要がありますか? (私がこれを尋ねる理由は、ほとんどの説明とチュートリアルはすべて、比較的きれいに設計された既存のデータベース、または私のものと比較して新しく作成されたデータベースで機能するためです。したがって、この問題を解決する方法を見つけるのに非常に苦労しています)

  3. 既存の SQL クエリは大量にありますが、データマッパー (IBatis.net など) の方が適しているでしょうか? 簡単に変更して動作させ、既に行った投資を再利用できるからです。

SO でこの質問を見つけました。これは、ORM を使用できることを示していますが、これはマッピングの問題であるという印象を受けますか?

注: 現時点では、オブジェクト モデルは存在しなかったため、明確に定義されていません。既存のシステムはほとんどすべてを SQL で処理するか、機能を完成させるために非常に複雑で多数のクエリで構成されていました。私は初心者であり、ORM と MVC に関する経験はまったくありません。したがって、これは私が経験している素晴らしい学習曲線です。

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

ruby - DatamapperInMemoryデータベース

DataMapper.setup:default、'sqlite3 :: memory:'を使用して、メモリデータベース内のSqlite3を使用してDatamapperを簡単にセットアップできます。

ただし、テストするときは、自動移行を呼び出すのではなく、各テストの後にメモリデータベース全体を破棄したいと思います。すべてを削除するためのショートカットとして。出来ますか?または、デフォルトのリポジトリをnilに設定し、ガベージコレクタにそれを破棄させるだけで十分ですか?

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

ruby-on-rails - appengine で Datamapper を移行する方法

からモデルチェンジしました

「property :trail_count, Integer, :default => 0」を追加しました

そして、既存の appengine テーブルを移行して追加のフィールド「trail_count」を追加したいのですが、DataMapper.auto_upgrade を読みました! するべきです。

しかし、「undefined method `auto_upgrade!」というエラーが表示されます for DataMapper:Module"

DM モデルを移行する方法を教えてください。

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

ruby-on-rails - 既存の ROR アプリを GAE に移行する

http://gist.github.com/268192を使用して、App Engine で基本的な rails app1 を実行できました。

したがって、基本的な app2 に、ローカル マシンで正常に動作する CE をインストールします。(communityengine.org)

しかし、community_engine プラグインがインストールされ、すべての gem がフリーズされている実際の app2 で同じ手順を実行すると、アプリ エンジン インストーラー スクリプトは、boot.rb、routes.rb などのさまざまなファイルを上書きするように要求しますが、私はこれを実行しません。許可しないでください。

したがって、予想どおり、rails + ce アプリを GAE に公開すると、公開されず、app2 での CE のローカル インストールも台無しになります。

したがって、問題は明らかで、CE は ActiveRecord を使用し、GAE は DataMapper を使用します。

したがって、私の質問は次のように言い換えることもできます: Active Record を使用する既存の ROR アプリを、DataMapper を使用する GAE に移行できますか?

PS: これは、ROR と GAE に関する私の最初のプロジェクトです。

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

ruby-on-rails - DataMapper: auto_migrate を使用! 多対多の依存関係がありますか?

Rails3-pre と最新の DataMapper を使用して、アプリを MySql から Postgresql に移行しようとしています。

:through => Resource を使用して多対多の関係で関連付けられたモデルがいくつかあります。これは、DataMapper が両方のモデルの外部キーを持つ結合テーブルを作成することを意味します。auto_migrate できません! 私はこれを取得し続けるため、これらの変更:

考えられることはすべて試しましたが、フィールド定義に :constraint => :skip を追加したときにうまくいったと思っていましたが、auto_migrate を実行しようとするとエラーが返ってきます。:skip は依存関係を無視することを意味すると思いましたが、それは行を削除し、テーブルを削除しない場合にのみ適用されるのでしょうか?

db を一度 nuke した後に auto_migrate を実行できることを言及する必要がありますが、その後、エラーが発生します。

提案やアドバイスをいただければ幸いです。

編集: datamapper irc の Gibheer は、代わりに auto_upgrade を使用することを提案しました - テーブルを再作成しようとしません。

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

ruby - ruby/datamapper: クラスメソッドをモジュールにリファクタリング

私は次のコードを作成し、クラス メソッドを個別のモジュールにリファクタリングして、すべてのモデル クラスと機能を共有するために 1 日を費やしました。

コード ( http://pastie.org/974847 ):

次のようなものをアーカイブしたいと思います:

残念ながら、私の ruby​​ のスキルは低すぎます。私はたくさんのものを読みました(例:ここ)が、今はさらに混乱しています。以下の2点が気になりました。

  1. alias_methodモジュールで動的に定義されるため、失敗しDataMapper::Resourceます。
  2. allowed_propertiesモジュールを含むクラスメソッドを取得するには?

ルビーの行方は?

よろしくお願いします。

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

postgresql - Heroku の Sinatra/Haml/DataMapper での Postgres エラー

シンプルな Sinatra アプリを Heroku に移行しようとしています。Taps を使用した Ruby アプリ コードと既存の MySQL データベースの移行はスムーズに進みましたが、次の Postgres エラーが発生します。

PostgresError - エラー: 演算子が存在しません: text = integer LINE 1: ...d_at", "post_id" FROM "comments" WHERE ("post_id" IN (4, 17,... ^ ヒント: 与えられた演算子に一致するものはありません名前と引数の型明示的な型キャストを追加する必要がある場合があります。

問題がクエリの型の不一致に関連していることは明らかですが、これは非常に高いレベルの抽象化で DataMapper ORM によって Haml テンプレートから発行されているため、これをどのように制御すればよいかわかりません。 ...

具体的には、これは特定の投稿を表すp.commentsHaml テンプレートからの呼び出しで発生しているようです。p

Datamapper モデルは次のように関連しています。

これは、MySQL を使用する私のローカルおよび現在ホストされている環境では問題なく動作しますが、Postgres は明らかにより厳密です。

Postgres DB では何百もの Datamapper & Haml アプリが実行されているに違いありません。このモデルの関係は非常に型にはまったものです。ありがとう!

更新:解決方法については、Heroku: MySQL から DB を移行した後の Postgres 型演算子エラーを参照してください。

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

postgresql - Heroku: MySQL から DB を移行した後の Postgres 型演算子エラー

これは、これをデータベースの問題というよりもプログラミングの問題として表現した以前の質問へのフォローアップです。

Heroku の Sinatra/Haml/DataMapper での Postgres エラー

問題は、実行後の Heroku の Postgres データベースの ID 列のストレージに切り分けられたと思いますdb:push

要するに、私のアプリは元の MySQL データベースでは適切に実行されますが、MySQL では INT として格納されているにもかかわらず、Postgres に TEXT として格納されているように見える ID 列でクエリを実行すると、Heroku で Postgres エラーがスローされます。私の質問は、Heroku へのデータ転送時に Postgres で ID 列が INT として作成されている理由と、これを防ぐ方法があるかどうかです。

heroku console問題を示すセッションからの出力は次のとおりです。

ありがとう!