在Rails中创建初始化的新记录

时间:2015-02-07 09:38:29

标签: ruby-on-rails ruby activerecord

我搜索过类似帖子的类似帖子,但无法找出答案。这是一个新问题,提前道歉。

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

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

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

1 个答案:

答案 0 :(得分: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

您还可以创建一个可以打电话或安排的佣金。