我正在尝试覆盖validates_attachment
中的Subclass
,但我注意到它只适用于Superclass
验证;我想知道为什么子类中的validates_attachment
不起作用。有人遇到过这个问题吗?你是如何解决这个问题的?这是一个示例代码:
class Superclass
validates_attachment :logo, :image_ratio => { :ratio => {"1:1" => "28", "4:1" => "50", "5:1" => "40"} }
end
class Subclass < Superclass
validates_attachment :logo, :image_ratio => { :ratio => {"1:1" => "40", "2:1" => "60"} }
end
答案 0 :(得分:1)
我建议您将类的字段放在不同的表中。你可能因此而遇到问题。
但是如果你真的只想为这两个类只有一个表,那么我相信你可以使用这样的东西:
validates_attachment :logo, :image_ratio => { :ratio => {"1:1" => "40", "2:1" => "60"} }, :unless => Proc.new {|attach| attach.type == "SubClass"}
我认为您有attach_type
列,但根据您确定附件类型是否为SubClass
的方式,您可以自行更改。
您也可以尝试从validates_attachment
中移除Subclass
,而不是在模型中尝试with_options
,如下所示:
with_options :unless => :attach_type == "SubClass" do |attach|
attach.validates_attachment :logo, :image_ratio => { :ratio => {"1:1" => "40", "2:1" => "60"}}
end
答案 1 :(得分:0)
这适用于我... rails 4
validates :photo, :presence => true,
:attachment_content_type => { :content_type => "image/jpg" },
:attachment_size => { :in => 0..10.kilobytes }
答案 2 :(得分:0)
任何其他人遇到问题,他们需要实例访问才能验证我使用了以下内容:
class AttachmentDynamicContentTypeValidator < Paperclip::Validators::AttachmentContentTypeValidator
def validate_each(record, attribute, value)
@record = record
super
end
def allowed_types
@record.my_valid_types_array || ["text/plain"]
end
def check_validity!; end
end
在实际的资产实例中,我添加了以下内容:
class Asset < ActiveRecord::Base
validates :asset, attachment_dynamic_content_type: :asset_content_type
end
希望有人帮助。