我正在构建一个包含图片专辑的应用程序。我希望图像的ID在添加到相册时从1开始。但是,根据我目前的设置,他们不会为每张专辑重置,而是继续从一张专辑到下一张专辑。
模型
class Album < ActiveRecord::Base
attr_accessible :title, :description, :album_id
has_many :images, :dependent => :destroy
validates :title, :description, :presence => true
end
class Image < ActiveRecord::Base
attr_accessible :title, :description, :picture, :image_id, :album_id, :albumcover
belongs_to :album
accepts_nested_attributes_for :album
mount_uploader :picture, PictureUploader
end
图像控制器
class Admin::ImagesController < ApplicationController
respond_to :html, :json
def index
@album = Album.find(params[:album_id])
@images = @album.images.all
end
def new
@album = Album.find(params[:album_id])
@image = @album.images.new(params[:id])
end
def create
@album = Album.find(params[:album_id])
@image = @album.images.new(params[:image])
if @image.save
flash[:notice] = "Successfully added image!"
redirect_to [:admin, @album, :images]
else
render :action => 'new'
end
end
def show
@album = Album.find(params[:album_id])
@image = @album.images.find(params[:id])
end
def edit
@album = Album.find(params[:album_id])
@image = @album.images.find(params[:id])
end
def update
@album = Album.find(params[:album_id])
@image = @album.images.find(params[:id])
if @image.update_attributes(params[:image])
flash[:notice] = "Successfully updated Image"
redirect_to [:admin, @album, :images]
else
render :action => "edit"
end
end
def destroy
@album = Album.find(params[:album_id])
@image = @album.images.find(params[:id])
@image.destroy
@albumid = @album.id
@id = @image.id
FileUtils.remove_dir("#{Rails.root}/public/uploads/image/picture/#{@albumid}/#{@id}", :force => true)
redirect_to admin_album_images_path(@album)
end
end
如何在每张专辑中将编号从1开始?
答案 0 :(得分:0)
“我希望图片的ID从1开始
image_id字段是可能自动递增的数据库标识符字段。它基于图像表中的行数,与图像和相册之间的关联无关。让逻辑依赖于它可能不是一个好主意。
我很好奇为什么你想要一个图像的序列号。例如,如果您想在相册中订购图像,则可以选择以下选项:
album.images.sort_by(&:created_at)
另一种选择是在Images表中添加一个名为serial_number的额外列并自行管理。
如果您可以通过序列号分享您想要达到的目标,您将获得更好的答案!