Я создал интерес, в котором размещалась ассоциация.Полиморфные ассоциации Статус в концерне
Мне нужно установить статус полиморфной ассоциации.
has_one :status, class_name: 'VideoStatus', inverse_of: :video, dependent: :destroy
belongs_to :video, inverse_of: :status
Я не могу сделать эту Ассоциацию. Как это сделать?
require 'active_support/concern'
module EncodeStatuses
extend ActiveSupport::Concern
FORMATS = %w[mp4]
HIGH_VERSION = 'high'
MEDIUM_VERSION = 'medium'
LOW_VERSION = 'low'
VERSIONS = [HIGH_VERSION, MEDIUM_VERSION, LOW_VERSION]
included do
has_one :status, class_name: 'VideoStatus', inverse_of: :video, dependent: :destroy
accepts_nested_attributes_for :status, update_only: true
delegate :success?, :failure?, :waiting?, :encoding?, to: :status
end
end
модели/video.rb
class Video < ActiveRecord::Base
include EncodeStatuses
...
end
модели/post.rb
class Post < ActiveRecord::Base
include EncodeStatuses
...
end
модели/video_status.rb
class VideoStatus < ActiveRecord::Base
STATUS_WAITING = 'waiting'
STATUS_ENCODING = 'encoding'
STATUS_SUCCESS = 'success'
STATUS_FAILURE = 'failure'
STATUSES = [STATUS_WAITING, STATUS_ENCODING, STATUS_SUCCESS, STATUS_FAILURE]
belongs_to :video, inverse_of: :status
belongs_to :post, inverse_of: :status
...
end
сделал вы разместили associ внутри «включено» блок? –
@AnilMaurya да, мне нужно сделать только полиморфную ассоциацию «статусом». – user3311412
Вы можете показать свою озабоченность, чтобы мы могли отлаживать. –