小编cih*_*cih的帖子

在rails应用程序中处理大型文件上传的最佳方法是什么?

我有兴趣了解在Rails应用程序中处理大型文件上传的不同方法,2-5Gb文件.

据我所知,为了传输这种大小的文件,需要将其分解为更小的部分,我已经做了一些研究,这是我到目前为止所做的.

可以像FTP一样恢复所有这些方法,我不想使用FTP的原因是,如果可能的话,我想保留在网络应用程序中吗?我已经使用了carrierwave和paperclip,但我正在寻找能够恢复的东西,因为上传5Gb文件可能需要一些时间!

在我列出的这些方法中,我想说明哪些方法运作良好,如果还有其他方法可能会丢失?如果可能的话,没有插件,宁愿不使用Java Applets或Flash.另一个问题是这些解决方案在上传时将文件保存在内存中,这也是我希望尽可能避免的约束.

bittorrent ruby-on-rails http large-file-upload

39
推荐指数
2
解决办法
2万
查看次数

Rails模型attr_accessor属性不保存?

这是我正在使用的结构:

应用程序/模型/ model.rb

class Model < ActiveRecord::Base
    attr_accessor :some_var
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ model_controller.rb

class ModelsController < ApplicationController
    def show
        @model = Model.find(params[:id])
        @other_var
        if @model.some_var.nil?
            @model.some_var = "some value"
            @other_var = "some value"
        else
            @other_var = @model.some_var
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

每当我运行此代码(例如show方法)时,if子句被评估为true(例如@ model.some_var == nil).我该如何解决这个问题?我对attr_accessor的工作方式有什么不妥吗?

model ruby-on-rails attr-accessor

2
推荐指数
1
解决办法
4205
查看次数

Rails基于一列来定义活动记录结果,如果为空则定义另一列

所以我有一个活动的记录查询,返回一些记录,让我们说它看起来像这样.

jobs = Job.where(:user_id => current_user.id)

正如您所期望的那样,它返回current_user的作业.假设作业有两个日期,deadline_date并且due_date.如果我想订购,deadline_date我可以做点什么..

jobs.order("deadline_date asc")

这按预期工作,现在图像我在工作模型中有这样的东西.

class Job < ActiveRecord::Base
 def deadline_date
  self.read_attribute(:deadline_date) || self.due_date
 end
end
Run Code Online (Sandbox Code Playgroud)

所以作业将显示它,deadline_date如果它不是零,它将回退使用due_date.所以要对此进行排序,我已经做了以下......

jobs.sort_by{|job| job.deadline_date}
jobs.sort_by{|job| job.deadline_date}.reverse
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题,但我想知道有更好的选择,是否有可能使用SQL实现这一点?这也产生了一些重复的代码,因为sort_order我的控制器中有一个变量,我可以像这样直接传递...

jobs.order(sort_order)

现在看起来更像是......

if params[:sort] == "deadline_date"
 if params[:order] == "asc"
  jobs.sort_by{|job| job.deadline_date}
 else
  jobs.sort_by{|job| job.deadline_date}.reverse
 end
else
 jobs.order(sort_order)
end
Run Code Online (Sandbox Code Playgroud)

注意:这是一个任意的例子,实际上它有点乱,但你明白了.所以我正在寻找一种SQL替代方案或者如何改进它的建议.干杯

ruby sql activerecord ruby-on-rails

2
推荐指数
1
解决办法
1509
查看次数