問題タブ [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.

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

ruby-on-rails - これは attr_accessible が原因ですか?

最近、モデルをattr_accessibleフィールドで更新したところ、予想どおり、突然一部のテストが機能しなくなりました。ただし、次のような仕様があります。

@user.inventory.should == 1は、私が今行ったチェックです。nilなぜか在庫があります。<<手術のせいでしょうか?User モデルの inventory_id 属性により、これが最も可能性が高いと思います。

私はそれがattr_accessible一般的にハックのように思えて、私はちょっと好きではないと言わざるを得ませんが、なぜそれを使うべきかはわかります。これは事実だと思いますか?もしそうなら、どうすればそのチェックを避けることができますか?

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

ruby-on-rails - モデル属性の更新

私はブログプラットフォームであるRailsアプリを持っており、複数の寄稿者を許可しています。私のユーザーモデルには、書き込み権限を割り当てるための: writerboolean属性があります。ただし、:writerは、ユーザーモデルのattr_accessibleの下にリストされていません。

実行せずに、Webを介してこの属性を編集する方法が欲しかった

コンソールを介して、しかし私はこれがユーザーモデルのattr_accessibleの下に:writerをリストせずに不可能であるかどうか疑問に思っています。adminユーザーのみがアクセスできるページがいくつかあり、それらのビュー内で:writer属性 を切り替える機能を配置できるようにしたいと思います。

それが本当に可能であるならば、それはどのように行われることができますか?よろしくお願いします!

編集:私が得たいくつかの答えに基づいて、私は私の質問でより具体的にすべきだったと思います。謝罪します。BeerlingtonとHiteshが指摘しているように、私はまだ:writer属性を個別に更新できることを理解しています。私が知りたかったのは、ビューを通してそのような関数をどのように実装できるかということでした。クリック可能なリンクを作成して:writerの状態を切り替えることは可能でしょうか?リンクにコントローラー関数を呼び出して、 :writerトグルに適切なuser_idを渡すことは可能でしょうか?

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

ruby-on-rails - attr_accessible 以外の変数の切り替え

私はブログ プラットフォームである Rails アプリケーションを作成しており、多くの寄稿者がいます。私のUserモデルには、特定のユーザーが記事を公開する権限を持っているかどうかを示す:writerブール属性があります。一括割り当てを防ぐために、:writer属性はUserモデルのattr_accessibleの下にリストされていません。代わりに、次のような関数を作成して、書き込み権限を切り替えられるようにすることを考えました。

ただし、このアプローチに関していくつか質問があります。

  1. ビューからこれを呼び出すにはどうすればよいですか? link_toまたはbutton_forを介して関数を呼び出す方法はありますか?
  2. そのような関数をどこに配置しますか?コントローラー、またはヘルパーで?
  3. config/routes.rbファイルのルートを編集する必要がありますか?

よろしくお願いします。

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

ruby-on-rails - レールに関するattr_accessible/securityの質問-これに対処するための最良の方法は何ですか?

Railsのセキュリティについて質問があります。モデルがあり、、、などのUser役割のブール値が多数あるとします。admindirector

管理者は間違いなくフォームでこれらの値を編集したいのでattr_accessible、管理者ユーザーにこれを行わせるために使用したいと思います。

もちろん、他の用途でもユーザーモデルを編集できます。プロファイルを編集するか、新しいユーザーをシステムに招待/追加するときに使用できます。ディレクターの場合、実際にはディレクターよりも「少ない」役割を設定してもらいたいのですが、ディレクターが設定しdirectorたり、admin

ユーザーを変更するこれらのコントローラーを公開しているので、この場合は設定をattr_accessible許可directorしませんか?adminこれは非常に大きなセキュリティホールのように聞こえます。

では、アクセスを制限するための最良の方法は何ですか?

  1. 各パラメータを一度に1つずつ設定しますか?

  2. 作成/更新アクションを設定admin = falseしますか?director = false最も単純な解決策ですが、これをコントローラーに含めるのはちょっと厄介です。

  3. ifステートメントを使用して、そのユーザーロールがこれらの属性を編集して許可できるかどうかを確認しますか?

  4. before_validationまたは?などのrailsコールバックを使用しますかbefore_save

  5. 他の宣言型ソリューション?

ありがとう

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

ruby-on-rails-3 - has_many :through 関係を持つ結合モデルで attr_accessible を使用する

会社を作成し、その過程で従業員になるユーザーがいます。employees テーブルには:user_idと があり:company_idます。

かなり基本的です。リソース EMPLOYEE には、 boolean などの外部キー以外の属性があります:active。を使用したいのですattr_accessibleが、これはいくつかの問題を引き起こします。属性:user_idは正しく設定されていますが、:company_idnil です。

だから私の質問は次のとおりです。:user_idが正しく設定されている場合、そうではないにもかかわらず、同じように正しく設定されないのattr_accessibleはなぜですか? :company_idであってはなりませんattr_accessible

Rails 3.0.8 を使用しており、3.0.7 でもテストしました。

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

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で修正されています。詳細は以下をご覧ください

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

ruby-on-rails - 「attr_accessible」効果

私は Ruby on Rails 3.0.9 を使用していますが、そのメソッドがどのような場合 (つまり、どのメソッドに対して)attr_accessible効果があるかを知りたいです。たとえば、私が使用する場合

ステートメントにnew(...)メソッドを使用するときに、これらの属性値を割り当てないようにします。User.new(params[:user])

しかし、他にどのような方法がありますか? たとえば、メソッドを正しく実行できwhere(...)ますexists?(...)attr_accessible?

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

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」を使用しているため、名前のみを変更できる人。お役に立てれば。他の誰かがこの問題を抱えているに違いないと確信しています。

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

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_idsactive

手動で値を割り当てることはできますが、完璧な解決策ではないと思います。

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

ruby-on-rails - Rails 3.1:as =>:adminを使用して、attr_accessibleによって保護されている属性を更新します

Rails 3.1 APIのattr_accessibleについて読んだ後、そこにas:adminオプションがあることがわかりました。2つのことを知りたいです。

  1. ユーザーが管理者フラグを持っている場合、コントローラーはどのようにしてユーザーが管理者であることをモデルに通知しますか。

  2. ユーザーが所有者である場合、:as => ownerモデルで指定できますか。また、コントローラーがモデルにアイテムの所有者であることをどのように通知しますか。