2015-02-07 40 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 

您還可以創建一個耙取,你可以打電話或時間表。