我正在尝试在我的 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
我希望这与两个模型中的 attr_accessible 宏有关,但我无法确定它到底是什么。艾默生的源代码与 create 方法的脚手架没有任何变化,因此不确定我是否需要更新我的源代码以让孩子们保存表单中的值。在我看来,我的 form_for @car 中确实有 :html => { :multipart => true }。线索?提前致谢。