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

ruby-on-rails - 仮想属性の割り当てで検証エラーを通知しますか?

これは Rails/ActiveRecord に関する質問です。

基本的にイベントやパフォーマンスを表現する必要があるモデルがあります。各イベントには多くの属性があります。属性は基本的に「このイベントでは、人物 X が役割 Y を持っていた」のようなものです。

ユーザーがこのデータを編集できるようにする最善の方法は、構造化された形式を期待するフリー テキスト フィールドを提供することであると結論付けました。これをロール stringと呼びます。

singer: Elvis Costello, songwriter: Paul McCartney, ...

自動補完を使用して、役割の名前 (歌手、ソングライターなど) と人の名前の両方を補完します。ロールと人の両方がデータベースに保存されます。

これを実装するために、Event モデルに仮想属性を作成しました。

これで問題ありません。ロール文字列が適切な形式であり、ロール文字列によって指定された関連付けがすべてチェックアウトされている場合、全体が非常にうまく機能します。

しかし、ロール文字列の形式が正しくない場合はどうなるでしょうか? わかりました、標準の検証と一緒に正規表現を使用して形式を確認できます。

しかし、ロール文字列によって暗示された関連付けが無効な場合はどうなるでしょうか? たとえば、上記のロール文字列を指定Elvis Costelloし、有効な人物を参照していない場合はどうなりますか?

validates_eachたとえば、属性で使用し:role_stringて関連付けを検索し、指定された名前のいずれかが何にも一致しない場合にエラーをスローできると思いました。

私の質問は 2 つあります。まず、関連付けを検証するには、文字列を解析して検索する必要があるため、このアプローチは好きではありません。これは、関連role_string=付けを実際にデータベース。

第二に、... この仮想属性への割り当てでエラーが発生したことをどのように示しますか?

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

ruby-on-rails - ActiveRecord モデルで仮想属性を検証するにはどうすればよいですか?

仮想属性を使用して、フォームのコンマ区切りテキストボックスから Entry モデルにタグを保存しています ( Railscasts #167に基づく):

タグ名に検証を追加したいのですが、それを行う最善の方法がわかりません。Tag モデルで定義された既存の検証メソッドがあります。

ただし、このupdate_tagsメソッドは保存後に呼び出されるため、作成による検証エラーは、エントリが既に保存された後に発生します。

Entry モデル内に検証メソッドを作成し、エントリの保存時にそれを呼び出すことを考えていますが、次のようになります。

  1. 私がそうすると、検証を行うための最良の方法が何であるかわかりません。内に独自の検証を作成するか、名前とチェックごとにオブジェクトをEntry作成しますか? 何らかの方法で検証エラー メッセージを収集したり生成したりできますか?Tagt.valid?Tag
  2. これがこの種の検証を行う正​​しい方法であるかどうかはわかりません。

助言がありますか?

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

ruby-on-rails - ActiveRecord 関連付けが更新のレコードの前に保存される

多くの sを持つEntryモデルがあります。s は、仮想属性を介してフォームのテキスト ボックスに入力することでエントリに追加されます。モデルで検証する前に、tag_names 文字列はを使用して実際のオブジェクトに変換されます。このモデルには、タグ名が関連付けを介して実行される正規表現と一致することを確認するための検証もあります。TagTagtag_namesEntryTagfind_or_create_by_nameTag

私のエントリーモデルは次のようになります。

新しいEntryオブジェクトを作成してタグを割り当てると、すべてが正しく機能します。Tagの 1 つに検証エラーがある場合、タグは保存されず、エラー メッセージが返されます。ただし、メッセージを返す代わりに、既存の Entry オブジェクトを無効なタグで更新しようとすると、self.tags=(上記の) 呼び出しでupdate_tags検証エラー メッセージとともに例外がスローされます。find_or_create_by_nameを呼び出す代わりに実際に新しいオブジェクトを返すように上書きしてもcreate、同じ結果が得られます。

オブジェクトが既に存在する場合、メインレコードが保存される前に、呼び出しが実際にオブジェクトを保存しているように思えます(そしてドキュメントが裏付けているようです) 。この保存が発生しないようにするために、または例外が発生して保存が false を返すのを防ぐためにできることはありますか?tags=TagEntry

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

ruby-on-rails - プラグインの仮想属性

仮想属性についてサポートが必要です。このコードは正常に機能しますが、プラグイン内でどのように使用しますか。目標は、プラグインを使用するすべてのクラスにこのメソッドを追加することです。

ありがとう

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

sql - Rails仮想属性検索またはSQL複合列検索

'first' および 'last' 属性を持つユーザー モデルがあるので、たとえば User.first.first #=> "Charlie" User.first.last #=> "Brown"

この User モデルには、仮想属性 'full_name' もあります

たとえば、次のようになります。

たとえば、動的検索の場合、その仮想属性で検索できればとてもいいでしょう。

検索条件の例:

これを行うことができるSQL言語で少なくともいくつかの方法を見つけたいと思っています。動的仮想属性も見つかった場合、それはシュトルーデルの追加のバニラ ソースです。(この冬持ってる人いますか?)

また、検索される名前についても懸念していました。たとえば、「ホームズ」は「最初」の列でのみ検索され、「最後」の列では検索されない可能性がありますUser.first.full_name #=> "Sherlock Holmes"

私はより包括的な検索を試みました:

user.rb

例えば

しかし、ここでの find_by_full_name メソッドは少し扱いに​​くいと思いました。

つまり、最初と最後を連結した保存後のフィルタによって毎回設定される列 full_name があったとします。そのため、特にあいまいな記憶を持つ人の名前を見つけることは役に立ちます。したがって、その人の姓または名のいずれかで「Doe」を覚えていた場合、単純な User.find_by_full_name('Doe') をいつでも実行して、できるだけ多くの名前を返し、それをさらに突き止めることができます。

Project.find(:all,:include => :users, :conditions=>['users.full_name LIKE ?', query]) これは列なので、 whereのようなことをしなければならない場合は、find(:conditions[...]) 句で検索できます。

ハッピーホリデーN

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

ruby-on-rails - 仮想属性を検証するRails

私のモデルは次のようになります。

私の質問 1. getter メソッド item_location を正しく記述する方法を教えてください。2. item_location フィールドを検証するにはどうすればよいですか。validate_item_location メソッドを作成しましたが、フォームからデータを POST するときに内部で item_location 変数を取得する方法がわかりません。3. 私のセッターメソッドは大丈夫ですか?

THX!

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

ruby-on-rails - Rails の新しいモデルの仮想属性?

私のアプリケーションのこの特定の部分は、店舗チェーン (H&M など) の Webshop モデルの作成を処理します。チェーンに Web ショップでもある Web サイトがある場合、1 つの Web ショップ モデルが作成されます。

Web サイトが Web ショップでない場合は、Chain モデルの文字列だけにします。

問題: チェックボックスと仮想属性を使用してこれを行っています。そのため、リクエストをチェーン コントローラに送信すると、チェックボックスで値「set_webshop」が設定されます。

チェーンモデルを更新するときはすべて完璧に機能しますが、新しいモデルを作成するときはそうではありませんか? 理由がわからない?

ここに POST および PUT リクエストがあります。

Rails の新しいモデルで virtual_attributes を処理する特別な方法はありますか?

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

ruby-on-rails - 設定値 - 仮想属性を持つモデルを使用したテーブルなしの静的

データベースから 2 つのテーブルを削除しようとしています。テーブルは message_sort_options と per_page_options です。これらのテーブルには基本的に、ユーザーが設定テーブルで設定として設定できるオプションである 5 つのレコードしかありません。プリファレンス テーブルには、sort_preferences や per_page_preference などの列があり、どちらもオプションを含む他の 2 つのテーブルのレコードを指しています。オプションの仮想属性と固定値を使用してモデルを設定するにはどうすればよいですか? 設定が検索されるたびにテーブル検索が不要になりますか?

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

ruby-on-rails - Ruby モデルで読み取り専用の仮想属性を作成する方法

model_instance.inspect を実行するときに常に含まれる仮想属性を作成したいと思います。attr_reader が単にインスタンス メソッドを定義するのと同じ結果をもたらすことは理解していますが、この属性をオブジェクトの「構成」の一部にしたいと考えています。

どうすればこれを達成できますか?

ありがとう!

アップデート

これは、より詳細に機能していないものです。

ご覧のとおり、コンソールを使用すると、「less_secure_asset_url」属性が返されません

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

ruby-on-rails - 仮想属性を初期化する

仮想属性を持つIncomingEmailモデルがあります:attachments

attachments仮想属性を初期化するの[]ではなく、次のように初期化する必要がありますnil

最初に設定せずi.attachments[](別の言い方をすれば、この仮想属性をデフォルトではなく空の配列に設定したいnil