невозможно получить локальный файл для сохранения в базу данных с помощью Rails 3 и скрепки - PullRequest
1 голос
/ 06 апреля 2011

У меня есть модель изображения с прикрепленным файлом: фотография, и я пытаюсь сохранить локальный файл в фотографию с помощью консоли.

Модель моего изображения:

class Image < ActiveRecord::Base
 has_attached_file :photo
 attr_accessor :photo_file_name
 belongs_to :item
end

My ImageМиграции:

class CreateImages < ActiveRecord::Migration
  def self.up
   create_table :images do |t|
   t.string :photo_file_name
   t.string :photo_content_type
   t.integer :photo_file_size
   t.datetime :photo_updated_at
   t.timestamps
 end
end

def self.down
 drop_table :images
end
end

На консоли:

a=Image.new
 => #<Image id: nil, file_name: nil, content_type: nil, file_size: nil, created_at: nil, updated_at: nil, item_id: nil> 

a.photo=File.new('/home/bobloblaw/Pictures/nomnom.jpg')
 => #<File:/home/bobloblaw/Pictures/nomnom.jpg> 

a.save
 => true 

a.photo
 => /system/photos/2/original/nomnom.jpg?1302065614 

Image.first.photo
 => /photos/original/missing.png 

Итак, как вы можете видеть, a.photo содержит правильную информацию, но почему-то неправильно сохраняет ее в Image вактуальная база данных.Я также пробовал различные комбинации добавления таких вещей, как: photo и: photo_file_name в attr_accessible.

Буду признателен за любую помощь, так как я искал повсюду, не нашел никого больше с этой проблемой!

Спасибо

Ответы [ 5 ]

1 голос
/ 08 августа 2011

Просто замените

attr_accessor :photo_file_name

на

attr_accessor :photo
0 голосов
/ 25 августа 2011

Дайте File.read, а не File.new попробовать.

0 голосов
/ 06 апреля 2011

вы должны указать: url и: path ..

как это

has_attached_file: accountlogo,

                :storage => :s3,
                :s3_credentials => "#{RAILS_ROOT}/config/amazon_s3.yml",
                :url  => "/accountslogo/:id/:basename.:extension",
                :path => "/accountslogo/:id/:basename.:extension"
                # :path => ":rails_root/public/accountslogo/:id/:basename.:extension"
0 голосов
/ 26 апреля 2011

Попробуйте удалить из определения вашей модели.Этот метод доступа будет создан автоматически.

attr_accessor :photo_file_name
0 голосов
/ 06 апреля 2011

Вы уверены, что Image.first возвращает эту запись, которую вы только что создали.Дважды проверьте, что он содержит правильные поля photo_*.

...