フォーム フィールドの値を取得して、それをクリップの添付ファイル名として使用することはできますか?
PiecePhoto
モデル:
belongs_to :piece
has_attached_file :image,
:styles => {
:slider => "940x420#",
:single => "540>",
:thumb => "60x60#",
:medium => "140x140#",
:original => "1024x1024>"
},
:path => ":attachment/:id/:style/:filename",
:url => ":attachment/:id/:style/:filename",
:storage => :s3,
:bucket => 'monavala',
:s3_credentials =>"#{Rails.root}/config/s3.yml"
validates_presence_of :image
before_post_process :parameterize_file_name
def parameterize_file_name
extension = File.extname(image_file_name).gsub(/^\.+/, '')
filename = File.basename(image_file_name, ".#{extension}").parameterize
self.image.instance_write(:file_name, "#{filename}.#{extension}")
end
フォームフィールドから値を取得するのではfilename = File.basename(image_file_name, ".#{extension}").parameterize
なく、image_file_name
編集:
モデルがネストされています
Piece
has_many :piece_photos
accepts_nested_attributes_for :piece_photos
PiecePhotos
belongs_to :piece
has_attached_file :image
モデル内のフォーム値を取得すると MVC パターンが壊れることを理解しています。別の方法はありますか?
編集2:
ここでは厳密にしようとしましたが、もう少し説明する必要があると思います。
フォームはネストされています。私はCollection
そのフォームを持って:has_many
Pieces
い:has_many
PiecePhotos
ます。
フィールドは、追加できるPieces
各フィールドに追加Piece
できPiecePhotos
ます。
そのファイル名をname + 一意の文字列または IDPiecePhotos
と同じにしたいと思います。Piece
したがって、すべてを 1 つの投稿で行う必要があります。最初にピースの写真をアップロードして、後でピースに追加したくありません。
基本的に必要なのは、Piece 名を取得し、それを PiecePhoto ファイル名として使用することだけです。
これは現在のフォームのイメージです。まだ開発中です。