問題タブ [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 に答える
282 参照

ruby-on-rails - スーパークラス (STI) での仮想属性の単一クラス属性への結合

(データベースに保存されている) 属性を作成するために、フォームからstart_datestart hour、およびstart_minute仮想属性を結合しようとしています。Eventstart_datetime

私は(STIを介して)いくつかのサブクラスを持っていEventます; TrainingSessionそれらを andWorkSessionと と呼びましょうPersonalTime

クラスは次のように構成されています。

の関連部分event.rb:

... とevents_controller.rb:

サーバー ログで、正しいパラメーターがフォームから送信されていることを確認しました。

しかし、(任意のタイプの) イベントを作成しようとするたびに、There was an error creating the event.(create メソッドに従って) 通知を受け取ります。をコメントアウトするvalidates :start_datetimeと、イベントが作成されますがstart_datetimenil.

これは、start_datetime文字列が仮想属性から適切にマージされていないことを意味する必要がありますが、その理由はわかりません.

ここで何が欠けていますか?設定するより良い方法はありstart_datetimeますか?

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

ruby-on-rails - CanCan、Rails 4、仮想属性の UnknownAttribute エラー

新しいレコードの作成中に CanCan を超えて仮想属性を取得する方法を考え出すのにかなりの時間を費やしています。

:name と :description のチームがあります

チームにはメンバーシップを通じてユーザーがいます。これは、別のコントローラーアクションを通じて制御し、「member_selections」と呼ばれるパラメーターにデータを保持し、非固有のキー (user_id => role) を持つハッシュを含みます。

したがって、私の params ハッシュは次のようになります。

ここで参照されているように、強力なパラメーターに対する通常の CanCan ソリューションがあります: https://github.com/ryanb/cancan/issues/835

ホワイトリストを介して仮想属性をパンチするために、ここで言及されている手法を使用しました

具体的には、私の「team_params」メソッドは次のようになります。

.tap とホワイトリスト ブロックを削除すると、新しいチームを作成できますが、新しいメンバーを追加することはできません。

.tap を維持すると、新しいメンバーを追加できますが、新しいチームを作成できません。「新しい」フォームを送信すると、次の結果が得られます。

TeamsController#create メソッドが適切に呼び出される前でもこのエラーが発生するため、Team.new/.create にパラメーターを間違って渡すことは問題ではなく、CanCan の問題であることを示唆しています。

Rails 4の仮想属性とCanCanでこの問題を抱えている人はいますか? どうすればこれを回避できますか?

ありがとう!

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

ruby-on-rails - Rails 4 の Devise を使用した仮想属性

私の User モデルにはフィールドがありませんが、サインアップ フォームにフィールド:nameを含めたいと考えています。このフィールドを使用して、別のモデルのレコードを.:nameafter_create

サインアップフォームから名前を取得するにはどうすればよいですか?

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

ruby-on-rails - Rails の仮想属性が検証されない

多くの点で、私はまだこのレール関連の初心者だと思います。支払い用の ActiveRecord モデルがあります。ただし、テーブルに追加されるのは 2 つだけで、authorize.net から肯定的な応答が返ってきたら、それらは完了します。このモデルのコントローラーには、カート フォームがあります。カート フォーム内には、@client から取得したデフォルト値とクレジット カード情報を含む請求情報があります。次のようになります。

モデルに attr_accessor :cardnumber とその他のカード情報フィールドを追加しました。

これらのゲッターまたはセッターメソッドはありません(おそらくそれが欠けています)。

ただし、支払いモデルにはこれがあります。

それでも、これまでのところ、フォームはこの検証をすべてバイパスし、チェックアウトに向かいます。どんな助けでも大歓迎です!これらの検証を適切に機能させるにはどうすればよいですか?

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

ruby-on-rails - Rails 3.2、仮想アクセサーおよび非推奨の警告

私は Rails 3.2 の仮想属性について本当に混乱しており、私のすべての調査は物事を明確にするのに役立っていません。

上記では、インターネットで見つけたほぼすべての代替案をまとめました。これは私が実行するコードではなく、同じもののいくつかのバージョンです。ただし、何を試しても、次の警告が表示されます。

DEPRECATION WARNING: You're trying to create an attribute 'parent'. Writing arbitrary attributes on a model is deprecated. Please just use 'attr_writer' etc.

時々、私はstack level too deep. 属性の仕組みを理解したいです。

1/attr_accessorattr_writerプラスattr_readerですよね?attr_writer警告で使用するよう求められるのはなぜですか?

2/ モデルから属性を書き込む方法 (およびその理由)

3/ コントローラーから属性を書き込む方法 (およびその理由)

どうもありがとう!

アップデート

さらにテストした後、それを行う適切な方法は@parent = id.to_i. 私はまだ理由を説明したいと思っています。self.なぜうまくいかないのか、本当に混乱しています。

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

ldap - 「isMemberOf」仮想属性を使用してユーザーのグループ メンバーシップを決定する際の注意事項は何ですか?

  1. すべての LDAP サーバーがこの仮想属性を (デフォルトで) サポートしていますか?

  2. この仮想属性を使用する前に有効にする必要があることを読みました。これは、すべての LDAP サーバーで機能する方法ですか? これはデフォルトで有効になっていませんか?

  3. これを使用してユーザーのグループ メンバーシップを決定することの他の欠点はありますか?

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

ruby-on-rails - 複数のフィールドに対する単一の仮想属性の定義

複数のフィールド/変数を処理できるように仮想属性を設定する方法があるかどうか疑問に思っています。

基本的に、モデルにはいくつかの異なる整数列 (収入、税金) があり、それぞれについて、フォームが送信されたときに確認し、無効な文字を削除する必要があります。これは、仮想属性を設定し、削除するために使用trしています。キャラクター。

そして、必要に応じてコントローラーに強力なパラメーターを設定しています。

問題は、私が多くのフィールド (上にリストした 2 つ以外) を持っているため、それらのフィールドのそれぞれについて (その多くはまったく同じ不正な文字をチェックする必要があるだけです)、新しい仮想属性を使用しなければならないことです。基本的に同じコードを繰り返すだけです:

強力なパラメーターを設定しながら、多くの異なるフィールドに共通の共有属性を設定する方法はありますか?

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

ruby-on-rails - 仮想属性が機能しないのはなぜですか?

Rails 3.2.17モデル内の2 つの仮想属性 ( expiration_amount& ) にアクセスしようとしexpiration_formatていますが、それらにアクセスすることはできませんでした。

他のすべては正しく更新されているようですが、私のログでは仮想属性が常に空白になっています。

編集提案どおりに両方を追加しましたが、まだ機能していませ:expiration_amount :expiration_formatん。attr_accessibleどちらも空白になります。私が気づいたことの 1 つは、DB にヒットした後にロガー呼び出しが発生していたことです。before_updateこれは正しいフィルターではありませんか?

EDIT 2Devise仮想属性へのアクセスを妨げている可能性はありますか?

EDIT 3モデル内のこれらの仮想属性にアクセスできなかった理由についてはまだ興味がありますが、コントローラーから開始することにしました (これは機能しています)。

ワーキングコントローラーアクション(Updateメソッド)

ワーキングモデル法

---オリジナルコード---

ユーザー.rb

ログ

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

ruby-on-rails-4 - Rails 4: composer_of の JSON ストア属性へのマッピング

私は次のモデルをセットアップしています

私はdatetime_select自分のフォームでヘルパーを使用しています:

これは非常にうまく機能しますがupdate、送信されたフォーム データを使用してコントローラーを呼び出すと、次のエラー メッセージが表示されます。

したがって、更新されたメソッドはattributesハッシュを直接操作しようとしていると推測していますexpires_atが、JSON column の単純なアクセサ メソッドであるため、明らかに attribute を見つけることができませんdata

composed_ofこのフィールドをDBに追加するだけで、おそらく機能することはわかっていますが、ステートメントを作成する必要はありません。expires_atただし、すべてのタスクに列があるわけではないため、このルートには進みません。

どうすればこのエラーを克服できますか? それとも私は何かを逃しましたか?