問題タブ [activemodel]

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 に答える
419 参照

xml - XML 列を使用して Rails 3 モデルを取得する

データベース (IBM DB2) に XML 列を含む Rails 3 モデルがあります。このモデルを XML 形式で取得しようとすると@model.to_xml、次のような XML 列がエスケープされます。

私が達成しようとしているのは次のとおりです。

XML列のエスケープを解除してメソッドを書き直すなど、これまでにいくつかのことを試みましたが、うまくいきto_xmlませんでした(XML列を効率的に解析する方法がわかりません)。

何か案は?

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

ruby-on-rails-3 - Rails 3、RSpec 2.5: 名前付きスコープで should_receive または stub_chain を使用する

Rails 3.0.4 と RSpec 2.5 を使用しています。私のコントローラーでは、名前付きスコープを多用しています。たとえば、

私のテストでは、文言ではなく、そのようなクエリの結果をモックできるようにしたいと考えています。次のようなことをしても意味がないと思います

名前付きスコープの並べ替えを決定した時点で、このテストは失敗するためです。

Rails 2.3 と RSpec 1.x では、これはうまくいきました。

上記の呼び出しはキャッチされ、正しく処理されます。しかし、Rails 3 では、何らかの理由でこれが機能しなくなりました。

なんで?ネストされたスコープの結果に期待値またはスタブを設定するにはどうすればよいですか? Rails 3 の ActiveModel 内のすべてが名前付きスコープであるため (ARel のおかげで)、これは何らかの方法で可能でなければならず、そうしないとテストが非常に脆弱になります。

ありがとう!

更新: GitHub の問題レポートも参照してください。

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

ruby - Ruby onRailsMustacheを使用してActiveModelからHTMLでプレビューする方法

Mustacheテンプレートを使用しており、RoR Webアプリケーションで、テンプレートとデータベースに保存したデータを組み合わせたプレビュービューを作成したいのですが、インターネットで検索した後( SO!)、アクティブなモデルを含む例は見つかりませんでした。

ActiveModelレコードをMustacheにパイプして、テンプレートとマージするにはどうすればよいですか?

セットアップ:

スキーマ

モデルについて特別なことは何もありません。どちらもActiveRecord::Baseからサブクラス化されています

コントローラー

景色

ルート

データ

テンプレート(例としてhtmlを簡略化しました)

結果

期待

私はこれに対する簡単な答えがあることを望んでいます、そして私はそれをただ逃しています。ありがとう。

0 投票する
5 に答える
12875 参照

ruby-on-rails - ActiveModel属性

ActiveRecord属性メソッドの機能を取得するにはどうすればよいですか?私はこのクラスを持っています:

PurchaseFormオブジェクトのすべての名前と値を一覧表示する属性メソッドを作成するにはどうすればよいですか?

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

ruby-on-rails - Rails 3:モデルの共有メソッドをどこに保存しますか?

Rails3プロジェクトの複数のモデルからアクセスできるようにしたいメソッド「random_password」があります。どこに保存するのか、どのようにアクセスを提供するのか、という規則が何なのか疑問に思っています。助けていただければ幸いです。

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

ruby-on-rails - 複数のカテゴリの合計を使用して ActiveRecord クエリを最適化する方法

モデル:

  • ユーザー has_many カテゴリ、has_many エントリ
  • カテゴリ has_many エントリ
  • エントリーはカテゴリとユーザーの両方に属します。

エントリに名前と金額があると仮定しましょう。特定のユーザーの特定の月を表示する必要があるビューがあり (ここでは created_at を使用します)、その特定の月のすべてのエントリをカテゴリ別にグループ化 (空のカテゴリは表示されません) し、合計を含むテーブルを表示したい場合カテゴリ内のエントリの数。

私の質問は次のとおりです。データベースにクエリを実行する (そしてキャッシュを最大限に活用する) 最も効率的な方法は何ですか? このビューは非常に頻繁にレンダリングされ、ユーザーが新しいエントリを作成するたびに、自然に 1 つのカテゴリの合計が変更されますが、他のカテゴリの合計は変更されません。

0 投票する
4 に答える
9708 参照

ruby-on-rails-3 - Rails の ActiveRecord オブジェクトの非永続属性のトラック ダーティ

ActiveRecord から継承するオブジェクトがありますが、次のように DB に永続化されていない属性があります。

ActiveModel Dirty が提供するように、「bar_changed?」などのメソッドを使用して、「bar」への変更を追跡できるようにしたいと考えています。問題は、 docsで説明されているように、このオブジェクトに Dirty を実装しようとすると、 ActiveRecord と ActiveModel の両方が定義されているdefine_attribute_methodsためエラーが発生しますが、パラメーターの数が異なるため、試行時にエラーが発生することですを呼び出すdefine_attribute_methods [:bar]

define_attribute_methodsを含める前にエイリアシングを試みActiveModel::Dirtyましたが、うまくいきませんでした: メソッドが定義されていないというエラーが発生します。

これに対処する方法についてのアイデアはありますか?もちろん、必要なメソッドを手動で記述することもできますが、Rails モジュールを使用して、ActiveModel の機能を ActiveRecord で処理されない属性に拡張することで、それが可能になるかどうか疑問に思っていました。

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

ruby-on-rails - Rails 3 フォーム エラー:「undefined method `quoted_table_name'」

ネストされた属性のセットを持つ Rails 3 フォーム (実際には simple_form) があります。

問題は、:credit_card 属性が CreditCard クラスに属していることです。これは、データベースにクレジット カード データを保存していないため、モデルではありません。/app/models/credit_card.rb でそのクラスを次のように定義しています (この RailsCast ごと):

user.rb には、次のようなものがあります。

ページにアクセスすると、次のエラーが表示されます。

そのエラーをグーグルで検索しても、提案は得られませんでした。Rails Console から CreditCard オブジェクトを作成できますが、何らかの理由で Rails フォーム ジェネレーターがクラスを認識していません。

私はすでに simple_form_for を form_for (および関連する変更) に交換しようとしたので、それは simple_form の問題ではないと思います。

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

ruby-on-rails-3 - Rails:親のコールバックの前に関連オブジェクトのコールバックを実行するにはどうすればよいですか?

私はInvoiceモデルを持っていhas_many :line_itemsます。

どちらのモデルにもbefore_validationコールバックがあります。請求書のコールバックでは、品目のコールバックが最初に実行されている必要があります。ただし、デフォルトでは請求書のコールバックが実行され、次に各明細のコールバックが実行されます。

最初に品目が検証され、次に請求書が検証されるようにする良い方法はありますか?

現時点では、次のようなものをいじっています。

これを処理するより良い方法はありますか?

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

ruby-on-rails - Rails 3: フォームの検証エラーを表示する (ActiveRecord モデルを保存しない)

これが本当に一般的でばかげた質問である場合はお詫びします。ドキュメントを何度も読んだことを誓いますが、すべてが ActiveRecord に集中しているように見え、モデルデータの作成または編集以外のことを行うフォームの道から迷い込んでしまいました。

いくつかの統計の抽出と表示を制御するための入力を含むフォームを例にとります。このフォームのユーザー入力を検証するために、Rails は何を提供してくれますsaveか? 次のようなもの:

  • :emailメールアドレスである必要があります
  • :num_products正の整数でなければなりません
  • :gender「M」または「F」のいずれかでなければなりません
  • :temperature-10 から 120 の間でなければなりません

などなど (ほとんどの Web フレームワークに標準装備されているもの)...

この任意の検証を実行するための Rails と、エラーのリストを表示するためのビュー ヘルパーがありますか、それともすべてが ActiveRecord と結合されていますか?

ドキュメントでこれを見落としていたら申し訳ありませんが、少なくとも mt 疲れた目がわかる限り、これこれは実際にはカバーしていません。

頭を掻く

ロブの答えのおかげで、これが私が思いついたものです。ユーティリティ クラス (適切な名前のValidator) を作成しました。このクラスは、必要なすべてのもののためにコントローラーに埋め込まれています。

たとえば、コントローラーで、小さなインラインクラスを定義するだけです。

.rbロジックがよりコントローラー指向の私見である場合、検証ルールのすべてのセットを独自に固執することは少し不必要に感じます。これをもっと簡潔に書く方法があるかもしれませんが、私は Ruby と Rails にかなり慣れていません。