問題タブ [virtual-attribute]

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

sql - Rails順序付きリストでランニングバランスを取得-合計仮想属性

トランザクションごとの現在の残高を取得しようとしています。これは、順序付けられたリストの単純な合計(クレジットが記録されるまで-デビットが記録されるまで)です。

課題は、トランザクションが順不同で入力されることが多く、トランザクションログが「日付」フィールド(入力されるべき日付を示す)と最初に「クレジット」(請求前の支払いが表示されるように)で並べ替えられることです。同日)。

関連付けは並べ替えられます。

データは以下と同様に表示されます

これは、リースモデルで以下のメソッドを実行することで取得しました。

問題は、関心のある日付全体を通して、以前のすべての差を取得したくないということです。*現在のレコードを通じて、以前のすべての違いを取得したいと思います。

私が考えることができる条件やフィルターを実行するための他の明白なプロパティはありません。私が考えることができる最善の解決策は、おそらく私を解雇するはずの醜い解決策です...:

これはこれを行う正しい方法ではありませんか?

Rails 3.2.12、Ruby1.9.3を使用しています

ありがとうフィル

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

ruby-on-rails - Rails 4 の仮想属性

「attr_accessible」が削除されたため、Rails 4で仮想属性(ゲッター、セッター)を使用するにはどうすればよいですか。

ここで問題が発生しています

更新/作成しようとすると、上記のメソッドに到達できますが、以下のセッターに到達できません。

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

ruby-on-rails - 仮想フォーム フィールドに分割されていない属性を入力する方法

電話番号をセグメントに分割する 3 つの仮想属性 (phoneAreaCode、phonePrefix、phoneSuffix) を持つフォームがあり、これらのセグメントは結合され、phoneNum としてデータベースに保存されます。

ユーザーがプロファイルを更新しようとすると、ほとんどのフィールドが入力されますが、仮想フィールドは入力されません。ゲッターだと思ったものを使って動かそうとしましたが、何が欠けているのかわかりません。その点について、私は 2 番目のモデルのアドレス属性を持つネストされたフォームを使用していますが、これらの属性が nil の場合、フォーム フィールドは更新ビューにまったく表示されません。それらがnilであってもそれらを表示する方法はありますか? ネストされたフォーム属性がサインアップ ビューに表示され、サインアップ ビューと更新ビューの両方がレイアウトから同じフォームをレンダリングしています。モデルは以下。

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

ruby-on-rails - Rails 属性をプロパティと値のペアに変換する

一連の標準メタデータ属性を持ち、通常どおりデータベースに永続化されるメディア モデルがあります。ここでやりたいことは、構成可能なメタデータ属性をこのモデルに既存の属性の上に追加することです。これらの属性のリストは構成ファイルで定義され、実行時にロードされます。これらは、メイン モデルに関連付けられた一連のプロパティと値のペアとして、データベースの別のテーブルに格納されます。

だから、私のコードは現在、

私がやりたいことは、標準のメタデータ属性と同じ方法で Media モデルのカスタム メタデータ属性にアクセスして更新できるようにすることです。たとえば、カスタム メタデータ属性がpublisherおよびcontributorと呼ばれる場合、Media モデルでそれらにアクセスしたいと考えて@media.publisher@media.contributorます@media.custom_metadata[{:name => 'publisher', :value => 'Fred'}, {:name => 'contributor', :value => 'Bill'}]

仮想属性がこれを達成するための最良の方法であるように思われますが、仮想属性を使用している人々について私が見つけることができるすべての例は、属性の名前が実行時の構成から動的ではなく静的で既知のものであるため、関連するプロパティ値レコードに書き込むコードを含むpublisherやなどのメソッドを定義できます。publisher=

( returnとattr_accessor *Settings.custom_metadata_fields仮定して) を使用してクラスの属性を定義し、同様の手法を使用して.Settings.custom_metadata_fields[:publisher, :contributor]attr_accessible

私が立ち往生している部分は、レコードからデータをロードするときにアソシエーションから仮想属性を設定する方法と、逆に、レコードが保存される前に仮想属性のデータをアソシエーションに戻す方法です。

現在、これが機能していると思われる 2 つの方法は、 または を使用するか、またはコールバックを使用することmethod_missingですattribute_missingか? どちらの場合も、モデルに通常の属性と仮想属性が混在しているため、どのように定義すればよいかわかりません。initializebefore_save

助言がありますか?

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

ruby-on-rails-4 - Rails で仮想属性を割り当てる

Rails 4 で仮想属性を割り当てるこれら 2 つの方法の違いを理解しようとしています。テキストフィールドを解析し、コンマで分割してタグフィールドを作成することにより、新しい ActiveRecord 配列フィールドを使用しようとしています。作業コードは次のとおりです。

ただし、クラス変数に代入してこのモデルのタグ フィールドを代入するように変更すると、「スタック レベルが深すぎます」が発生します。

誰かがなぜこれが私に起こるのか説明できますか? 使用self.tagsすると、スタックが爆発するまでこの仮想属性が実行されるようです。ActiveRecord のどの部分が原因ですか?