我有一个应用程序使用becomes
方法将对象转换为另一个对象。编码资产应该变为EncodedImage
,但它没有正确保存并且EncodedImage
阵列保持空白。虽然看起来好像是保存它,但实际上并没有将这些数据存储在EncodedImage
对象中。 我有以下代码:Rails 4“成为”问题
class EncodedAsset < Asset
serialize :files
serialize :linked_files
serialize :linked_files_cache
belongs_to :video, :foreign_key => :asset_id
scope :ordered, -> { order("extname ASC, bitrate ASC") }
scope :mp4s, -> { where(:extname => '.mp4')}
scope :m3u8s, -> { where(:extname => '.m3u8')}
validates_presence_of :asset_id
before_create :set_type
def get_url(file)
Saas::Config.primary_s3_bucket_url + file
end
protected
def set_type
case profile_name
when 'thumbnail'
self.becomes(EncodedImage)
else
self.becomes(EncodedVideo)
end
end
def is_hls?
extname.include?('.m3u8')
end
end
的EncodedAsset类型保持EncodedAsset时一旦缩略图上传它应该成为EncodedImage。
我在做什么错?
self.becomes(EncodedImage)应该返回EncodedImage的一个实例和当前的EncodedAsset的属性......我不认为它实际上会将当前的EncodedAsset变成一个EncodedImage ......我真的不用,所以我不清楚它的用法 – user3334690
你不能像对待你想的那样在对象类中进行变异。你只能根据这个返回一个不同的对象。 –