私の最初の投稿はここにありますので、私は必要な情報をすべて含んでいることを願っています!満足しています。まだ質問をしなくても、2ヶ月間学習することができました。 :-)特定のパラメータに基づいて既存のレコードのネストされた属性を設定する
新しいCallsheetが毎月送信されるたびに更新したいlastvisit列を含むネストされたStoreレコードを持つCallsheetsレコードがあります。 :lastvisitフィールドは、Store:id == @ callsheet.store_idがすでに定義されている場所で更新する必要があります。私の中で初心者には、「更新」メソッドの正しいコードが
@callsheet.update(callsheet_params).where(@callsheet.store_id => @store.id)
だろうと思ったが、私は、このインスタンスで@storeにアクセスするかどうかはわかりません、これはおそらくちょうどとにかく新しいレコードを作成します。
正しい方向のヘルプやポイントはありがたいです。ありがとう!
私はそれを 'update'メソッドで実行しようとしていましたが、もしそれが異なっていたら 'create'メソッドで実行させたいと思います。関連情報:
callsheet.rb:
class Callsheet < ActiveRecord::Base
belongs_to :store
accepts_nested_attributes_for :store
callsheets_controller.rb:
edit.html.erb:
<%= form_for @callsheet, url: callsheet_path, remote: true, :html => { :multipart => true} do |f| %>
<%= f.fields_for :store do |s| %>
<%= s.text_field :lastvisit, :id => 'lastvisitHidden' %>
<% end %>
<%= f.hidden_field :store_id, :id => 'storeSelectHidden' %>
//
':id'をnested_attributesから削除すると、' store_attributes:[:lastvisit] 'になります。 –
'@ callsheet.update'や' @ callsheet'に 'where'を連鎖させることはできません。 'Callsheet'モデルか別のクエリ(' where'、 'all'、' order'など)だけです。 –