2015-02-07 44 views
0

我已经搜索了类似标题的类似帖子,但无法找出答案。这是一个新问题,事先道歉。在Rails中初始化时创建新记录

我想在初始化时将记录添加到我的数据库,以不断检查我的本地目录中有哪些视频。请注意,此应用程序仅适用于本地开发,不适用于部署。

我在这里犯了些什么愚蠢的错误?

saved_videos_controller.rb 

Dir.glob("#{ROOTPATH}/lib/videos/*.mp4").each do |item| 
    size = File.size(item) 
    @extension = File.extname(item) 
    name = File.basename(item) 
    @name = name[0...name.index(@extension)] 
    @rootpath = item[0..item.rindex('/')] 

    SavedVideo.create(:name => @name,:extension => @extension) unless size==0 
end 

def index 
    @saved_videos = SavedVideo.all 
end 

saved_video.rb 

class SavedVideo < ActiveRecord::Base 
    include ActiveModel::Model 
    attr_accessor :filename, :extension 
    validates :filename, :extension, presence: true 

    def self.name 
    @name 
    end 

    def self.extension 
    @extension 
    end 
end 

schema.rb 
    ActiveRecord::Schema.define(version: 20150207072508) do 

    create_table "saved_videos", force: true do |t| 
    t.string "filename" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "extension" 
end 
+0

@onathan_What你得到的错误或例外。 – VKatz 2015-02-07 09:55:30

回答

0

这样做的一种方法是将代码移动到config/initializers /中。即

配置/初始化/ videos.rb

Dir.glob("#{ROOTPATH}/lib/videos/*.mp4").each do |item| 
    size = File.size(item) 
    @extension = File.extname(item) 
    name = File.basename(item) 
    @name = name[0...name.index(@extension)] 
    @rootpath = item[0..item.rindex('/')] 

    SavedVideo.create(:name => @name,:extension => @extension) unless size==0 
end 

您还可以创建一个耙取,你可以打电话或时间表。