問題タブ [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.
ruby-on-rails - スーパークラス (STI) での仮想属性の単一クラス属性への結合
(データベースに保存されている) 属性を作成するために、フォームからstart_date
、start hour
、およびstart_minute
仮想属性を結合しようとしています。Event
start_datetime
私は(STIを介して)いくつかのサブクラスを持っていEvent
ます; TrainingSession
それらを andWorkSession
と と呼びましょうPersonalTime
。
クラスは次のように構成されています。
の関連部分event.rb
:
... とevents_controller.rb
:
サーバー ログで、正しいパラメーターがフォームから送信されていることを確認しました。
しかし、(任意のタイプの) イベントを作成しようとするたびに、There was an error creating the event.
(create メソッドに従って) 通知を受け取ります。をコメントアウトするvalidates :start_datetime
と、イベントが作成されますがstart_datetime
、nil
.
これは、start_datetime
文字列が仮想属性から適切にマージされていないことを意味する必要がありますが、その理由はわかりません.
ここで何が欠けていますか?設定するより良い方法はありstart_datetime
ますか?
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でこの問題を抱えている人はいますか? どうすればこれを回避できますか?
ありがとう!
ruby-on-rails - Rails 4 の Devise を使用した仮想属性
私の User モデルにはフィールドがありませんが、サインアップ フォームにフィールド:name
を含めたいと考えています。このフィールドを使用して、別のモデルのレコードを.:name
after_create
サインアップフォームから名前を取得するにはどうすればよいですか?
ruby-on-rails - Rails の仮想属性が検証されない
多くの点で、私はまだこのレール関連の初心者だと思います。支払い用の ActiveRecord モデルがあります。ただし、テーブルに追加されるのは 2 つだけで、authorize.net から肯定的な応答が返ってきたら、それらは完了します。このモデルのコントローラーには、カート フォームがあります。カート フォーム内には、@client から取得したデフォルト値とクレジット カード情報を含む請求情報があります。次のようになります。
モデルに attr_accessor :cardnumber とその他のカード情報フィールドを追加しました。
これらのゲッターまたはセッターメソッドはありません(おそらくそれが欠けています)。
ただし、支払いモデルにはこれがあります。
それでも、これまでのところ、フォームはこの検証をすべてバイパスし、チェックアウトに向かいます。どんな助けでも大歓迎です!これらの検証を適切に機能させるにはどうすればよいですか?
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_accessor
はattr_writer
プラスattr_reader
ですよね?attr_writer
警告で使用するよう求められるのはなぜですか?
2/ モデルから属性を書き込む方法 (およびその理由)
3/ コントローラーから属性を書き込む方法 (およびその理由)
どうもありがとう!
アップデート
さらにテストした後、それを行う適切な方法は@parent = id.to_i
. 私はまだ理由を説明したいと思っています。self.
なぜうまくいかないのか、本当に混乱しています。
ldap - 「isMemberOf」仮想属性を使用してユーザーのグループ メンバーシップを決定する際の注意事項は何ですか?
すべての LDAP サーバーがこの仮想属性を (デフォルトで) サポートしていますか?
この仮想属性を使用する前に有効にする必要があることを読みました。これは、すべての LDAP サーバーで機能する方法ですか? これはデフォルトで有効になっていませんか?
これを使用してユーザーのグループ メンバーシップを決定することの他の欠点はありますか?
ruby-on-rails - 複数のフィールドに対する単一の仮想属性の定義
複数のフィールド/変数を処理できるように仮想属性を設定する方法があるかどうか疑問に思っています。
基本的に、モデルにはいくつかの異なる整数列 (収入、税金) があり、それぞれについて、フォームが送信されたときに確認し、無効な文字を削除する必要があります。これは、仮想属性を設定し、削除するために使用tr
しています。キャラクター。
そして、必要に応じてコントローラーに強力なパラメーターを設定しています。
問題は、私が多くのフィールド (上にリストした 2 つ以外) を持っているため、それらのフィールドのそれぞれについて (その多くはまったく同じ不正な文字をチェックする必要があるだけです)、新しい仮想属性を使用しなければならないことです。基本的に同じコードを繰り返すだけです:
強力なパラメーターを設定しながら、多くの異なるフィールドに共通の共有属性を設定する方法はありますか?
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
形
ログ
ruby-on-rails-4 - Rails 4: composer_of の JSON ストア属性へのマッピング
私は次のモデルをセットアップしています
私はdatetime_select
自分のフォームでヘルパーを使用しています:
これは非常にうまく機能しますがupdate
、送信されたフォーム データを使用してコントローラーを呼び出すと、次のエラー メッセージが表示されます。
したがって、更新されたメソッドはattributes
ハッシュを直接操作しようとしていると推測していますexpires_at
が、JSON column の単純なアクセサ メソッドであるため、明らかに attribute を見つけることができませんdata
。
composed_of
このフィールドをDBに追加するだけで、おそらく機能することはわかっていますが、ステートメントを作成する必要はありません。expires_at
ただし、すべてのタスクに列があるわけではないため、このルートには進みません。
どうすればこのエラーを克服できますか? それとも私は何かを逃しましたか?