Rails3 アプリに Paperclip を実装しようとしていて、Emerson Lackey の railscast (http://www.emersonlackey.com/article/paperclip-with-rails-3) をモデルとして使用しています。する (特定のモデルの複数の写真を用意する)。ただし、画像に関する NULLS 以外のものを保存する子オブジェクトを取得していません。
複数の車の写真を持つ親モデルの車を次に示します。
class Car < ActiveRecord::Base
attr_accessible :model_year, :admin_model_name_id, :chassis_number, :location, :description, :for_sale, :sale_contact_info_visible_to_all, :sale_contact_number, :car_photos_attributes
has_many :car_photos, :dependent => :destroy
accepts_nested_attributes_for :car_photos, :allow_destroy => true
そして、車の写真のモデル:
class CarPhoto < ActiveRecord::Base
belongs_to :car
has_attached_file :car_photo, :styles => { :large => "640x480", :medium => "300x300>", :thumb => "100x100>" }
attr_accessible :file_name, :content_type, :file_size, :car_id
end
新しい車を保存すると、車は以前と同じように正常に保存されますが、CarPhotos は保存されません。Webrick からの出力は次のとおりです。
AREL (0.2ms) INSERT INTO `car_photos` (`file_name`, `content_type`, `file_size`, `car_id`, `created_at`, `updated_at`) VALUES (NULL, NULL, NULL, 38, '2011-03-10 17:15:52', '2011-03-10 17:15:52')
[paperclip] Saving attachments.
[paperclip] Saving attachments.
SQL (5.8ms) COMMIT
Redirected to http://127.0.0.1:3000/cars/38
Completed 302 Found in 144ms
これは 2 つのモデルの attr_accessible マクロと関係があると思いますが、それが何であるかを正確に判断することはできませんでした。Emerson のソース コードには create メソッドの足場からの変更がないため、フォームから値を保存するように子を取得するために更新する必要があるかどうかはわかりません。ビューの form_for @car に :html => { :multipart => true } があります。手がかり?前もって感謝します。