Rails 4 passíveis de imagem para vários modelos

Usar o imageablepadrão para armazenar imagens de trilhos elimina dependências de joias e torna a adição de mais modelos mais gerenciável.

Existem alguns detalhes sobre esse padrão nos documentos: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

Usando refile, aqui está uma configuração aproximada:

Gere o modelo de imagem:

class CreateImages < ActiveRecord::Migration
def change
create_table
:images do |t|
t
.string :file_id
t
.boolean :featured
t
.references :imageable, polymorphic: true, index: true
t
.timestamps null: false
end
end
end

Atualize o modelo de imagem:

class Image < ActiveRecord::Base
attachment
:file
belongs_to
:imageable, polymorphic: true
end

Adicionar associação

class Model < ActiveRecord::Base
has_many
:images, as: :imageable, dependent: :destroy
accepts_attachments_for
:images, attachment: :file
end

Usando os campos no formulário de adicionar / editar (usando slim):

Existem mais detalhes sobre o refile gem na documentação

.form-group
= f.attachment_field :images_files, multiple: true, presigned: true, direct: true

Permitir os arquivos nos parâmetros fortes do controlador:

params.require(:community).permit(:name, :description, :address, :city, :province, :postal_code, :status, images_files: [])

# The important item
images_files
: []