私のモデルは段落と画像を記述しており、各段落には多くの画像があります。画像の取り扱いには、ペーパークリップを使用しています。一括割り当ての場合、画像を段落のnested_attributesとして使用します。関連するコード:
model / paragraph.rb
class Paragraph < ActiveRecord::Base
has_many :images, :dependent => :destroy
attr_accessible :text, :images_attributes, :images
attr_accessor :text
accepts_nested_attributes_for :images, :allow_destroy => true, :reject_if => proc { |attributes| attributes['photo'].blank? }
end
model / image.rb
class Image < ActiveRecord::Base
belongs_to :paragraph
has_attached_file :photo, :styles => { :original => '250*250>' }
attr_accessible :caption, :photo
attr_accessor :caption
end
panel.textとimage.captionは一時的な属性です(データベースにはありません)。コントローラまたはレールコンソールで段落を更新すると(id = 1の画像が実際に最初の段落に属していると仮定して)、次のようにparagraph.textが期待どおりに更新されますが、image.captionはまったく更新されません。
Paragraph.first.update_attributes({"text" => "foo", "images_attributes"=>{"0"=>{"caption"=>"bar", "id"=>"1"}}})
ただし、ペーパークリップを使用しない同様の設定(ネストされた一時属性)では、期待どおりに機能します。たとえば、ページに多くの段落があるページの場合は、次のようになります。
Page.first.update_attributes({"paragraphs_attributes"=>{"0"=>{"text"=>"test", "id"=>"1"}}})
これにより、ページとネストされた段落の値が期待どおりに一時的なテキスト属性で更新され、ペーパークリップの問題である可能性があると推測されます...
助けていただければ幸いです。ありがとう!!!