Usar o imageable
padrã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: []