問題タブ [attr-accessible]
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 - これは attr_accessible が原因ですか?
最近、モデルをattr_accessible
フィールドで更新したところ、予想どおり、突然一部のテストが機能しなくなりました。ただし、次のような仕様があります。
行@user.inventory.should == 1
は、私が今行ったチェックです。nil
なぜか在庫があります。<<
手術のせいでしょうか?User モデルの inventory_id 属性により、これが最も可能性が高いと思います。
私はそれがattr_accessible
一般的にハックのように思えて、私はちょっと好きではないと言わざるを得ませんが、なぜそれを使うべきかはわかります。これは事実だと思いますか?もしそうなら、どうすればそのチェックを避けることができますか?
ruby-on-rails - モデル属性の更新
私はブログプラットフォームであるRailsアプリを持っており、複数の寄稿者を許可しています。私のユーザーモデルには、書き込み権限を割り当てるための: writerboolean属性があります。ただし、:writerは、ユーザーモデルのattr_accessibleの下にリストされていません。
実行せずに、Webを介してこの属性を編集する方法が欲しかった
コンソールを介して、しかし私はこれがユーザーモデルのattr_accessibleの下に:writerをリストせずに不可能であるかどうか疑問に思っています。adminユーザーのみがアクセスできるページがいくつかあり、それらのビュー内で:writer属性 を切り替える機能を配置できるようにしたいと思います。
それが本当に可能であるならば、それはどのように行われることができますか?よろしくお願いします!
編集:私が得たいくつかの答えに基づいて、私は私の質問でより具体的にすべきだったと思います。謝罪します。BeerlingtonとHiteshが指摘しているように、私はまだ:writer属性を個別に更新できることを理解しています。私が知りたかったのは、ビューを通してそのような関数をどのように実装できるかということでした。クリック可能なリンクを作成して:writerの状態を切り替えることは可能でしょうか?リンクにコントローラー関数を呼び出して、 :writerトグルに適切なuser_idを渡すことは可能でしょうか?
ruby-on-rails - attr_accessible 以外の変数の切り替え
私はブログ プラットフォームである Rails アプリケーションを作成しており、多くの寄稿者がいます。私のUserモデルには、特定のユーザーが記事を公開する権限を持っているかどうかを示す:writerブール属性があります。一括割り当てを防ぐために、:writer属性はUserモデルのattr_accessibleの下にリストされていません。代わりに、次のような関数を作成して、書き込み権限を切り替えられるようにすることを考えました。
ただし、このアプローチに関していくつか質問があります。
- ビューからこれを呼び出すにはどうすればよいですか? link_toまたはbutton_forを介して関数を呼び出す方法はありますか?
- そのような関数をどこに配置しますか?コントローラー、またはヘルパーで?
- config/routes.rbファイルのルートを編集する必要がありますか?
よろしくお願いします。
ruby-on-rails - レールに関するattr_accessible/securityの質問-これに対処するための最良の方法は何ですか?
Railsのセキュリティについて質問があります。モデルがあり、、、などのUser
役割のブール値が多数あるとします。admin
director
管理者は間違いなくフォームでこれらの値を編集したいのでattr_accessible
、管理者ユーザーにこれを行わせるために使用したいと思います。
もちろん、他の用途でもユーザーモデルを編集できます。プロファイルを編集するか、新しいユーザーをシステムに招待/追加するときに使用できます。ディレクターの場合、実際にはディレクターよりも「少ない」役割を設定してもらいたいのですが、ディレクターが設定しdirector
たり、admin
ユーザーを変更するこれらのコントローラーを公開しているので、この場合は設定をattr_accessible
許可director
しませんか?admin
これは非常に大きなセキュリティホールのように聞こえます。
では、アクセスを制限するための最良の方法は何ですか?
各パラメータを一度に1つずつ設定しますか?
作成/更新アクションを設定
admin = false
しますか?director = false
最も単純な解決策ですが、これをコントローラーに含めるのはちょっと厄介です。ifステートメントを使用して、そのユーザーロールがこれらの属性を編集して許可できるかどうかを確認しますか?
before_validation
または?などのrailsコールバックを使用しますかbefore_save
?他の宣言型ソリューション?
ありがとう
ruby-on-rails-3 - has_many :through 関係を持つ結合モデルで attr_accessible を使用する
会社を作成し、その過程で従業員になるユーザーがいます。employees テーブルには:user_id
と があり:company_id
ます。
かなり基本的です。リソース EMPLOYEE には、 boolean などの外部キー以外の属性があります:active
。を使用したいのですattr_accessible
が、これはいくつかの問題を引き起こします。属性:user_id
は正しく設定されていますが、:company_id
nil です。
だから私の質問は次のとおりです。:user_id
が正しく設定されている場合、そうではないにもかかわらず、同じように正しく設定されないのattr_accessible
はなぜですか? :company_id
であってはなりませんattr_accessible
。
Rails 3.0.8 を使用しており、3.0.7 でもテストしました。
ruby-on-rails - Rails3でDeviseとattr_accessibleを使用してRespond_with
Rails 3でAPIを構築しており、deviseを使用して認証の一部を処理しています。
私は通常、respond_withメソッドを使用して、さまざまなリソースのxml/jsonを返します。
たとえば、GET/groups.xmlはにルーティングされます
これは、さまざまなリソースのサイト全体で正常に機能し、各グループのすべての属性を含む適切にフォーマットされたjsonまたはxmlを返します。
ただし、GET /users.xmlを呼び出すと、各ユーザーの属性の限られたサブセットでのみ応答します。attr_assessibleで定義された属性のみがここに返されることがわかります。他のモデルには当てはまらないため、これはdeviseの「機能」であると思われます。
誰かが私を啓発できますか?
編集:これは、Devise1.4.2で修正されています。詳細は以下をご覧ください
ruby-on-rails - 「attr_accessible」効果
私は Ruby on Rails 3.0.9 を使用していますが、そのメソッドがどのような場合 (つまり、どのメソッドに対して)attr_accessible
効果があるかを知りたいです。たとえば、私が使用する場合
ステートメントにnew(...)
メソッドを使用するときに、これらの属性値を割り当てないようにします。User.new(params[:user])
しかし、他にどのような方法がありますか? たとえば、メソッドを正しく実行できwhere(...)
ますexists?(...)
かattr_accessible
?
ruby-on-rails - Rails 3.1 attr_accessible 検証は、役割の配列を受け取ります
Rails の新しい動的 attr_accessible 機能を使用したいと思います。ただし、各ユーザーには多くの役割があります (私は宣言型承認を使用しています)。したがって、モデルには次のものがあります。
そして、これをコントローラーに渡します:
user_roles はシンボルの配列です:
配列内のシンボルの 1 つが宣言された attr_accessible と一致するかどうかをモデルで確認したいと考えています。したがって、重複は避けます。
たとえば、user_roles =[:admin, :employee] とします。これは機能します:
しかし、すべてのユーザーが多くの役割を持っているため、1 つの役割またはシンボルしか検証できなければ意味がありません。
どんな助けでも大歓迎です
** * ** * ** * ** * ***更新* ** * ** * ** * ** * ** * ** * ** * **
ここからサンプル アプリをダウンロードできます: https://github.com/jalagrange/roles_test_app
このアプリには 2 つの例があります。そして、コントローラーの更新アクションで「user_roles.first」を使用しているため、名前のみを変更できる人。お役に立てれば。他の誰かがこの問題を抱えているに違いないと確信しています。
ruby-on-rails - Rails attr_accessible:asおよびカスタムバリデーター
モデルユーザーがいます
フロントエンドとバックエンド用の2つの個別のユーザーコントローラー。最初のものは非常に些細でうまく機能し、2番目のものは下にあります
ユーザーのメールドメインが制限されているかどうかをチェックするカスタムバリデーターを使用しています
更新アクションは正常に機能しますが、作成アクションではYou have a nil object when you didn't expect it!
エラーが発生しconfig/initializers/restricted_email_domain_validator.rb:3:in 'validate_each'
ます。すべてがなくても大丈夫ですが、:as => :super_admin
もちろん属性は割り当てられていません。role_ids
active
手動で値を割り当てることはできますが、完璧な解決策ではないと思います。
ruby-on-rails - Rails 3.1:as =>:adminを使用して、attr_accessibleによって保護されている属性を更新します
Rails 3.1 APIのattr_accessibleについて読んだ後、そこにas:admin
オプションがあることがわかりました。2つのことを知りたいです。
ユーザーが管理者フラグを持っている場合、コントローラーはどのようにしてユーザーが管理者であることをモデルに通知しますか。
ユーザーが所有者である場合、
:as => owner
モデルで指定できますか。また、コントローラーがモデルにアイテムの所有者であることをどのように通知しますか。