問題タブ [mass-assignment]
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 - Rails - attr_accessible & 一括代入
attr_accessible
Railsでの使用について質問があります。
一括割り当て保護をバイパスするためにに設定guard_protected_attributes
したい場合があります。false
次の行が機能しない理由が不思議です (「キーを文字列化できません」というエラーが発生します)。
...しかし、これは:
理由を知っている人はいますか?
ruby-on-rails - Railsでaccepts_nested_attributes_for+一括割り当て保護を使用する
あなたがこの構造を持っているとしましょう:
Tvのユーザーは意図的にアクセスできないことに注意してください。つまり、家、部屋、テレビを1ページで入力できるトリプルネストフォームがあります。
コントローラのcreateメソッドは次のとおりです。
質問:世界でどのようにuser_id
各テレビにデータを入力しますか(current_user.idから取得する必要があります)?良い習慣は何ですか?
これが私がこれで見るcatch22です。
- ハッシュ
user_ids
に直接入力しparams
ます(かなり深くネストされています)user_ids
一括割り当てできないため、保存は失敗します
- #saveが終了した後、すべてのテレビのユーザーにデータを入力します
user_id
存在する必要があるため、保存は失敗します- 上記をバイパスしても、テレビはしばらくの間IDなしになります-吸う
これを行うための適切な方法はありますか?
ruby-on-rails - Rails の新しいモデル インスタンスの割り当て順序を変更できますか
「a_value」と「b_id」という 2 つの属性があります。(実際の名前ではありません。) 「a_value」は、「b_id」によって参照されるモデル「B」からの情報を使用して、ファイル システムに保存されます。
したがって、私の params オブジェクトは次のようになります。
例えば。
さて、foo_controller.rb で:
しかし、これは失敗します。
Foo.a_value=(value) で私は持っています
Rails は割り当てをアルファベット順に行っており、b_id が存在しない場合にパニックを起こしているように見えますが、params ハッシュに存在し、検証に合格しているにもかかわらずです。
この割り当てが行われる順序を強制することはできますか? または、大量割り当ての残りが発生する前に b_id 割り当てを行う before_filter を作成できますか?
ruby-on-rails - 特定のコンテキストで一括割り当てを許可する
REST API 経由で公開しようとしているいくつかの Rails モデルがあります。特定のコンテキストで(APIまたは管理インターフェースを介して)一括割り当てを許可する簡単な方法を探していますが、ユーザーベースのフォームから入力するときは許可しません。
いくつかのキャッチもあります。まず、を使用して一連の子オブジェクトを作成して accepts_nested_attributes_for
います。次に、resource_controller
標準の更新の場合に自動的に params を正しく適用するプラグインを使用しています。APIコントローラーは独自の「名前空間」にあるため、ベースコントローラーに実装できるDRYを受け入れることができます。
いくつかの解決策が思い浮かびますが、現時点では明確な解決策はありません。助言がありますか?
ruby-on-rails - rails: belongs_to 関係での一括代入のセキュリティ上の問題
私は Rails のセキュリティ上の懸念について調べてきましたが、私が最も懸念しているのは大量割り当てです。私のアプリケーションは attr_accessible を使用していますが、公開された関係を処理する最善の方法が何であるかを完全に知っているかどうかはわかりません。基本的なコンテンツ作成/所有 Web サイトがあると仮定しましょう。ユーザーはブログ投稿を作成し、そのブログ投稿に関連付けられた 1 つのカテゴリを持つことができます。
したがって、次の 3 つのモデルがあります。
- ユーザー
- 投稿:ユーザーとカテゴリに属します
- カテゴリ:ユーザーに属します
私は、category_id の一括割り当てを許可しているので、ユーザーはそれを無効にしたり、自分のカテゴリの 1 つに変更したり、一括割り当てによって、他の誰かのカテゴリに変更したりできると思います。それは、私が進むべき最善の方法が何であるかについて、私がちょっと確信が持てないところです.
私が調査したリソース (特にrailscast #178とその railscast から提供されたリソース) の両方で、関連付けは一括割り当て可能であってはならないと述べられていますが、これは理にかなっています。ユーザーが投稿のカテゴリを簡単に変更できるようにする方法が他にないかどうかはわかりません。
これを解決する最善の方法についてのアイデアはありますか? 私はそれを間違った方法で見ていますか?
更新:私の懸念をもう少し明確にすることを願っています。
私がポストにいるとしましょう。次のようなものが必要ですか。
それは多くの仕事のように見えますか?更新アクションと作成アクションの両方で、すべてのコントローラーでそれを確認する必要があります。belongs_to 関係は 1 つだけではないことに注意してください。
ruby - ルビ並列代入、ステップ問題
それで、私はいくつかのプロジェクト オイラーの質問をして Ruby を学ぼうとしていますが、説明できないいくつかのことに出くわしました。両方の中間です。これに関する適切なドキュメントを見つけることができませんでした。Google を適切に使用していないだけかもしれませんが、適切な Ruby ドキュメントは少しまばらなようです。. .
1: これがどのように機能しているかをどのように説明しますか? 最初のスニペットは私が理解できない ruby コードです。2 番目のスニペットは私が書いたコードで、最初のスニペットを苦労してトレースした後にのみ同じことを行います。
2: 次の例で、「ステップ」を含む行が何をしているのかをどのように説明しますか? 私が収集できるものから、ステップコマンドは (range).step(step_size) のように機能しますが、これは (starting_point).step(ending_point, step_size) を実行しているようです。私はこの仮定で正しいですか?これの良いドキュメントはどこにありますか?
ruby-on-rails - Rails アプリは、本番環境で一括割り当てされた belongs_to 関連付けを認識しません
アカウント マネージャーに属するアカウント モデルがあります。
私のコントローラーは次のようになります。
リクエストは次のようになります。
何らかの理由で、このリクエストを送信した後、アカウント マネージャーが空白であるとフォームに表示されます。ただし、これは本番環境でのみ発生し、ローカル開発環境では発生しません。これを前に見た人はいますか?唯一の違いは、本番環境で REE を使用していることですが、これは Rails の機能であるため、問題になるとは思いません。Rails のバージョンはローカルと本番で同じ - 3.0.0
ruby-on-rails - Ruby on Rails attr_protected
User モデルに次のコードがあります。
新しいユーザー オブジェクトを作成しようとしていますが、次のコードで一括割り当て保護エラーが発生します。
attr_protected を回避してこのコードを機能させ、値を電子メールに割り当てる方法を知っている人はいますか?
ありがとうございました。
ruby-on-rails - 大量関連付けに関する関連付けのメタデータを吹き飛ばすことによる has_many
ねえ、Rails初心者ではありませんが、これは私を困惑させました. With には、Rails のスルー アソシエーションが多数あります。このようなものを使用して、ワインリストの関連付け(または)テーブルを介して、ワインをワインバーに大量に割り当てると。
これにより、そのワインバーに関連付けられているワインリストのすべての行が削除されます。次に、wine_ids 内のすべてのワインを検索します。これは、カンマで区切られたワイン ID の文字列であると推測されます。次に、ワインリストに新しい関連付けを挿入します。これにはコストがかかりますが、破棄された関連行に個々のワイン バーのグラスやボトルあたりの価格などのメタデータが含まれていなければ問題ありません。
すべてを吹き飛ばさないようにする方法はありますか。配列の列挙可能な比較を行い、変更を挿入して削除するだけです。それはRailsが行うことのような気がしますが、明らかな何かが欠けているだけです。
ありがとう。
ruby-on-rails - バグ?has_many 関連付けを更新するために、params を 2 回一括割り当てする必要があります
私は has_many :telephones Register model accept_nested_attributes_for :telephones, :reject_if number and code blank? を持ち、attr_accessible :telephones_attributes (および他のすべてのフィールド) を持つ Register モデルを持っています。
電話は belongs_to :register で、すべてのフィールドに attr_accessible があります
フォームがパラメーターを送信するとき、それは適切に形成されているように見えますが、フォームフィールドが @register.attributes = params[:register] に送信されると、すべてのフィールドが更新されますが、既存の電話は更新されません (更新を取得する必要があります)。そのフィールドも)、以前の状態のままです(デバッグ時に確認しました)
これは奇妙なところです。コンソールでテストすると、params に関するものだと思っていました。そこで動作させることができたので、初めて has_many 関連付けに対して必要なように動作することを発見しました。私はそれを割り当てようとしましたが、コントローラーでこれを試しました(大量割り当てパラメーターを2回)が機能します。
もちろん、私が model.attributes = params を割り当てに使用しているという事実と関係があるに違いありません。私はこの方法でそれを行っているので、システムへの変更の監視を保存することもできます(そして、私はこれを行っていません)。私は current_user のようなコントローラーに固有であると感じるいくつかのデータにアクセスする必要があるため、 before_filters で)おそらく設計が不十分です...しかし、それは奇妙ではありませんか?これが機能するには、2回一括割り当てする必要がありますか? これは何かのバグですか?それを修正する方法があるかどうか誰かが知っていますか?
- 私はレール2.3.8、ルビー1.8.6を使用しています
編集: これがサンプル コードです。このコードの多くはポルトガル語です。
telefone = 電話、cadastro = レジスター
ご覧のとおり、いくつかの関連付けに対して行われた変更を集約する all_changes メソッドを持っています。一度に 1 つのコメントを追加する手段として、comments(comentario_interno/externo) のカスタム セッターがあります...