Có, điều này là có thể. Bạn có thể sử dụng papreclip để quản lý các tệp tải lên (hoặc bất kỳ plugin/đá quý quản lý tải lên có uy tín nào khác). Hầu hết các công cụ này cung cấp cho bạn quyền truy cập vào tệp của tệp được tải lên. Bạn chỉ cần lưu trữ các tệp này trong cơ sở dữ liệu cùng với asset_uri (mà tôi cho rằng bạn đã lưu trữ) và để kiểm tra xem người dùng có thể tải lên một tệp khác hay không, chỉ cần tổng hợp tất cả các kích thước của tất cả các tài sản với user_id thích hợp.
Users:
id
email_address
first_name
upload_limit
Assets:
id
user_id
uri
filesize
filename
Sau đó, để lấy tổng kích thước của file được tải lên bởi một người dùng cụ thể, bạn có thể làm:
class User < ActiveRecord::Base
has_many :assets
#Check if the user can upload another file
def can_upload?
if Asset.sum('filesize', :conditions => 'user_id = #{self.id}') >= self.upload_limit
return false
else
return true
end
end
#See the user's used storage space
def used_storage
return Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
end
#See how much space the user has remaining
def available_storage
if self.can_upload?
return self.upload_limit - Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
else
return 0
end
end
end
Bạn có thể thấy tôi đang làm cho việc sử dụng ActiveRecord sum chức năng ở đây để làm việc tính . Bạn có thể dễ dàng sử dụng một bản đồ hoặc một số giải pháp dựa trên ruby khác.
Nguồn
2010-03-07 20:21:40