Как отключить плагин Attachment Fu в Community Engine, не удаляя его? - PullRequest
1 голос
/ 24 октября 2011

Итак, вот ситуация:

Модель фотографий в Community Engine использует приложение Fu. Я хочу использовать скрепку.

Теперь это работает нормально, пока мне не нужно удалить вложение. Вот когда вложение фу вызывает проблемы. Вот как выглядит Photo.rb (в / vendor / plugins / community_engine / app / models):

class Photo < ActiveRecord::Base


  acts_as_commentable
  belongs_to :album

  has_attachment prepare_options_for_attachment_fu(AppConfig.photo['attachment_fu_options'])

  acts_as_taggable

  acts_as_activity :user, :if => Proc.new{|record| record.parent.nil? && record.album_id.nil?}

  validates_presence_of :size
  validates_presence_of :content_type
  validates_presence_of :filename
  validates_presence_of :user, :if => Proc.new{|record| record.parent.nil? }
  validates_inclusion_of :content_type, :in => attachment_options[:content_type], :message => "is not allowed", :allow_nil => true
  validates_inclusion_of :size, :in => attachment_options[:size], :message => " is too large", :allow_nil => true

...
...

end

Итак, мой вопрос: есть ли способ отключить этот плагин? Я не хочу менять photo.rb и удалять строки, а также не хочу удалять плагин.

Есть идеи здесь?

Новая фотомодель (в / app /):

require 'paperclip_processors/cropper'

class Photo < ActiveRecord::Base   

  attr_accessible :image
  has_attached_file :image,      
                    :path=>":class/:hash/:style.:extension",
                    :styles => {
                      :thumb => {:geometry => "100x100!", :crop_to => :crop_parameters},
                      :medium => {:geometry => "290x320!", :crop_to => :crop_parameters},
                      :large => {:geometry => "664>", :crop_to => :crop_parameters},
                      :uncropped => "630x472"
                    },
                    :convert_options=>'-quality 92',
                    :processors => [:cropper]

  def crop_parameters
    ActiveSupport::JSON.decode(read_attribute(:crop_parameters)) rescue nil
  end


# overrides to make paperclip appear as attachment_fu to existing pages          

  def size # in MB
    image_file_size
  end
  def filename
    image_file_name
  end
  def content_type
    image_content_type
  end


  def public_filename(size=:original)
    image.url(size) || ""
  end

end

Новый фотоконтроллер (в / app /):

require 'pp'

class PhotosController < BaseController
  before_filter :use_paperclip, :only => [:create]

  def use_paperclip
    params[:photo][:image] = params[:photo][:uploaded_data]
    params[:photo].delete(:uploaded_data)     
  end

end

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Как именно вы используете скрепку, если вы ничего не инициализировали для нее?

Вы можете открыть класс в инициализаторе и изменить его в соответствии со своими потребностями.

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

0 голосов
/ 24 октября 2011

Если вы установили плагин в каталог vendor/, найдите плагин в подкаталоге plugins/ и закомментируйте все в init.rb. Это должно отключить все функции плагина, не удаляя его из дерева исходных текстов.

...