問題タブ [update-attributes]
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 update_attributes メソッドは、データベース内のモデルの更新を行うための最良の選択ですか?
私が取り上げている Rails 1.1.6 のチュートリアルではupdate_attributes
、上記のコントローラーのサンプル コードのように、モデルを更新する方法を使用することを推奨しています。update
Railsのドキュメントを見ると、特に論理的に名前が付けられているため、なぜこのメソッドが好まれなかったのか疑問に思っています。
ruby-on-rails - ruby-on-rails:update_attributesはモデルの検証をオーバーライドしますか?
私は典型的なPostモデルを持っています:
コントローラーには、次のものがあります。
ただし、2行目の検証が失敗した場合でも、4行目がコメントアウトされていない限り、投稿は作成されます。
1)なぜですか?
2)修正に関する提案?
ありがとう
ruby-on-rails - Rails: オブジェクトに文字列を保存する -- 構文の問題?
ファイル名文字列を消去してオブジェクトを更新する単純な関数を作成しようとしています。テスト文字列を保存すると機能しますが、作成した文字列変数を保存しようとしても何も起こりません。しかし、文字列を返すと、出力は正しいようです! 私は何が欠けていますか?
どうもありがとうございました。
ruby-on-rails - Rails: #update_attribute vs #update_attributes
これらはどちらも、ActiveRecord に更新を明示的に指示しなくても、オブジェクトを更新します。
Rails API は次のように述べています。
update_attribute
単一の属性を更新し、通常の検証手順を経ずにレコードを保存します。これは、既存のレコードのブール フラグに特に役立ちます。Base の通常の update_attribute メソッドは、検証モジュールが混在している場合にこれに置き換えられます。これはデフォルトです。
update_attributes
渡されたハッシュからすべての属性を更新し、レコードを保存します。オブジェクトが無効な場合、保存は失敗し、false が返されます。
したがって、オブジェクトを検証したくない場合は、 を使用する必要があります#update_attribute
。でこの更新を行った場合#before_save
、stackoverflow になりますか?
私の質問は#update_attribute
、保存前または検証だけをバイパスすることです。
また、ハッシュを渡す正しい構文は何#update_attributes
ですか...上部の私の例を確認してください。
asp.net-mvc - MVC2を使用して、日付が特定の日付範囲内にあることを検証するにはどうすればよいですか?
MVC2 Webアプリケーションで、ユーザーが13歳以上であることを検証する必要があります。これを可能にする日付/日時検証属性はありますか?
ruby-on-rails - Rails-検証に反対するupdate_attributes
だから私はログイン、メールアドレス、パスワード、パスワード確認、名前、アバター(写真)などのユーザーモデルを持っています。最初の5つには検証があり、基本的に5つすべてが存在する必要があると述べています。新しいモデル。
ただし、これにより、更新に関する問題が発生します。
ユーザーが自分の名前とアバターのみを編集できる編集ページがあります。現在、ログインを変更させるつもりはありません。別のページからメールアドレスとパスワードを変更したいと思います。
したがって、編集フォームは次のようになります。
を実行しようとすると、@user.update_attributes(params[:user])
パラメータが2つしかないため、更新は失敗します。これは、エントリの検証にパスワード、パスワード確認、電子メールなどが必要であり、それらがそのフォームに存在しないためです。name
avatar
を実行することでこれを回避できます@user.update_attribute(:name, params[:user][:name])
が、検証を回避することがGoodThing™であるかどうかが心配です。特にパスワードの更新のようなものに関しては、新しいパスワードを検証する必要があります。
別の方法はありますか?
そして、単にupdate_attribute forとを使用してこれを行うとしたら、どうすればよいでしょうか。:name
:avatar
これは機能しますか?
これはこれを行うための許容できる方法ですか...?
--フォローアップとして編集--Okie
、私はあなたが提案したように試しました
つまり、!
バージョンを実行していて、ブラウザにキャッチされて表示される例外は次のとおりです。
サーバーログの情報は次のとおりです。
うーん。これを見て、提出していることに気づきました"id"=>"tester"
。これで、user_idではなくユーザーのログイン名が表示されるようにルートを設定しました...それが理由でしょうか?でユーザーの更新を見つけようとしていますuser_id == tester
が、存在しないため、代わりに作成しようとしていますか?それは実際に私がルートのために間違っていることですか?
うーん...レーキルートは、ルートが次のとおりであることを教えてくれます:
user.rb
そして、私はファイルにそのようなルートを設定しました:
しかし、それはこの間ずっとlogin
ではなく、間違いなく表示されています。id
しかし、私はまた、更新アクションの最初に、を実行してから@user = User.find_by_login(params[:id])
、それを更新してい@user
ます。
私はとても混乱しています。>。<
2番目の更新:
私のUser.rb
検証は次のとおりです。
そして、hashed_passwordセクションはここにあります:
u.attributes
私にくれます
うーん...わかりました。仮想属性password
が実際には存在しないことについて、あなたが言ったことです...では、どうすればそれを回避できますか?バガー、ここで私は自分の認証コードを賢くいじっていると思った...
これらの認証プラグインの1つに変更するのは簡単ですか?新しいユーザーモデルを作成する必要がありますか?または、プラグインは現在のプラグインで動作できる必要がありますか?
これまでのすべての助けに感謝します、ところで!:D
ruby-on-rails - 条件で update_attributes を実行する方法は?
属性を更新する必要がありますが、次のような特定の条件を持つ行に対してのみです
どうすればいいのですか?
ruby-on-rails - 失敗した場合、 update_attribute は何を返しますか?
次のコードがあります
Line 44
失敗する可能性はありますか?データベースのメモリがいっぱいか、ネットワーク障害が発生したためです。その場合はどうなりますか?それが問題を引き起こす場合、それを回避するためのより良い方法は何ですか? update_attribute
失敗した場合、何が返されますか?
ruby-on-rails - アップデートでのaccepts_nested_attributes_forとhabtmの関連付けに関するレール検証は、関連付けをリセットします
Rails 2.3.8 では、検証で habtm 関連付けをループまたは検査すると、accepts_nested_attributes_for 関連付けの検証で問題が発生し、レッスンが読み込まれ、更新が失われます。たとえば、次のスキーマがあります。
および次のモデル:
私が以下を呼び出すと:
つまり、最後のレッスンは、29 の activity_id で始まります。lesson_set でupdate_attributes
を呼び出して、activity_id を 3
に設定しようとすると、true が返されますが、最後のレッスンを見ると、変更されていないため
、アクティビティ ID を 29 に設定します。 . update_attributes
activity_id は 29 のままです
が、もう一度呼び出して 3 に設定する
と、今度はレッスンが更新されます。
私のコードに何か問題がありますか?
私は頭を叩く瞬間に向かっていると思います!
ruby-on-rails - ネストされたモデルフォームとupdate_attributes
ProjectクラスとTeamMemberクラスの間に1対多の関係を持つネストされたモデルのフォームがあり、コントローラーには次のような更新関数があります。
@project = Project.find(params[:id])
ここで、保存が行われる前に、一部のチームメンバーのフォームに設定されていないフィールドをいくつか設定したいと思います。update_attributes関数をそのまま使用することはできません。
それを行うための最良の方法は何でしょうか?
ありがとう、ニコラス。