1

我正在尝试在我的 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 }。线索?提前致谢。

4

1 回答 1

0

这是我本周早些时候在 Rails3 上使用的代码 - 在我的模型中

has_attached_file :image1

没有 attr_accessible

然后我向上迁移以将字段添加到模型看起来像

add_column :offers, :image1_file_name, :string
add_column :offers, :image1_content_type, :string
add_column :offers, :image1_file_size, :integer
add_column :offers, :image1_updated_at, :datetime

希望能有所帮助并提供一些见解?看起来您可能缺少字段名称中的图像名称?

于 2011-03-10T17:40:39.610 回答