Пользовательский оператор Rails в модели - PullRequest
0 голосов
/ 20 июня 2009

Я работаю над приложением Rails, использующим attachment_ fu и хранилище Amazon S3. Можно ли сделать условием доступа: s3_ (часть параметров has_attachment) на основе пользовательского ввода при создании объекта. Я хотел бы, чтобы у пользователя была возможность выбрать, является ли приложение аутентифицированным для чтения или для публичного чтения. Возможно ли это и как бы вы настроили условный оператор?

Моя модель выглядит так:

has_attachment :content_type => :image,
               :storage => :s3,
               :size => 0.kilobytes..6144.kilobytes,
               :processor => 'Rmagick',
               :resize_to => '650x500>',
               :thumbnails => { :thumb => '75x75!' },
               :s3_access => ( [[conditional]] ? 'authenticated-read' : 'public-read' )

Очевидно, [[условное]] - это то, что я хочу заменить, но я не знаю, как правильно настроить условное условие для элемента на основе действий пользователя в модели. Возможно, это неправильное время условного выражения для этого типа. Есть предложения?

1 Ответ

0 голосов
/ 21 июня 2009

Джеймс, я делал это раньше. Я копался в своем старом коде, пытаясь найти пример, который я мог бы показать здесь, но я не могу его найти. Старый клиент, код, вероятно, ушел, и т.д ...

Вы на правильном пути, хотя. Помните, что has_attachment - это просто вызов метода с хешем для параметров, поэтому, если вы будете обращаться с ним как с таковым, вы можете настроить, какие значения хеша в конечном итоге отправляются методу.

Редактировать - вот пример кода -

production = ENV['RAILS_ENV'] == 'production'

has_attachment :content_type => :image, 
  :max_size => 1.megabyte, 
  :resize_to => '800x600>', 
  :thumbnails => { :thumb => '146x146>', :small => '75x75' }, 

  # skip s3 for local development and testing
  :storage => (production ? :s3 : :file_system),
  :path_prefix => (production ? 'comment_images' : 'public/comment_images')

В приведенном выше примере я хотел сохранять загружаемые файлы локально во время разработки, но переключаться на S3 при работе. Так что вы очень близко к тому месту, где вам нужно быть ...

...