Rails模型的动态问题

时间:2016-12-27 14:20:28

标签: ruby-on-rails

对于一个项目,我需要能够将视频上传到视频服务器。首先,范围只是上传到Kaltura视频服务器。为了实现这一点,我创建了一个简单的关注点,它为处理上传的模型添加了一些回调方法。

这些回调方法(特别是对于Kaltura)正在加载:

class Videofile < ActiveRecord::Base
  include KalturaBox::Entry
end

它们包含这样的基础知识(简化版):

module KalturaBox
  module Entry


    extend ActiveSupport::Concern

      included do

        before_save :create_kaltura_item, on: :create

        private
          def create_kaltura_item
            puts 'create callback called'
            self.upload
          end
      end
end

现在范围已经扩大,我被要求也包括Vimeo上传作为选项。

是否可以根据模型的属性动态嵌入关注点,还是应该考虑使用STI?

我正在考虑创建一个名为“video_type”的下拉菜单。如何根据该属性包含正确的代码?

1 个答案:

答案 0 :(得分:1)

  

我正在考虑创建一个名为“video_type”的下拉菜单。如何根据该属性包含正确的代码?

使用conditional callbacks

before_save :create_kaltura_item, on: :create, if: :kaltura?

def kaltura?
  video_type == 'kaltura'
end

通过这种方式,您可以静态地包含这两个问题。