私のアプリケーションには、モデルPost
&がありImage
ます。私の協会は:
class Post < ActiveRecord::Base
has_many :images
accepts_nested_attributes_for :images, reject_if: :image_rejectable?, allow_destroy: true
class Image < ActiveRecord::Base
belongs_to :post
私はのために使用cocoon gem
しますnested_forms
ユーザーが画像を追加するとき、ユーザーが追加する画像に適用できるグローバル設定がいくつかあります。
私は次のようにしてそれを行います:
class Post < ActiveRecord::Base
has_many :images
accepts_nested_attributes_for :images, reject_if: :image_rejectable?, allow_destroy: true
after_create :global_settings
private
def global_settings
self.images.each { |image| image.update_attributes(
to_what: self.to_what,
added_to: self.added_to,
)
}
end
これはうまくいきますが、今はそれが欲しいので、もし彼らが望むならedit
post's images
、同じ投稿グローバル設定 を新しいレコードにのみ適用したいと思います。
私はそれをやろうとしました:
class Post < ActiveRecord::Base
has_many :images
accepts_nested_attributes_for :images, reject_if: :image_rejectable?, allow_destroy: true
after_save :global_settings
private
def global_settings
if new_record?
self.images.each { |image| image.update_attributes(
to_what: self.to_what,
added_to: self.added_to,
)
}
end
end
これはまったく機能せず、グローバル設定はどのレコードにも追加されませんでした (new/create
またはedit/update
アクションにも追加されませんでした)。
私も試しました:
after_save :global_settings, if: new_record?
これによりエラーが発生しました:undefined method 'new_record?' for Post
すべての新しいレコード/新しい画像にグローバル設定のみを適用するにはどうすればよいですか?
ps: SO でいくつかの答えを見つけようとしましたが、何もうまくいきませんでした!