我在rails4 app上的模型中的图像字段上进行验证时遇到问题。
class ModelA < ActiveRecord::Base
validates :name, presence: true
validates :logo, presence: true
has_attached_file :logo, styles: {
thumb: '100x100>',
square: '200x200#'
}
在迁移中,将创建此模型的新实例。
def migrate(direction)
super
if direction == :up
obj = Model1.create!(:name => "Test")
这是失败的,因为未指定必填字段,如果我明确指定默认图像,则该表还没有必要的列。
如果我在迁移之前删除图像(在本例中为徽标)验证,然后指定图像文件和详细信息(如名称),则会运行此迁移。 有没有更好的方法来设置这个模型?
答案 0 :(得分:0)
我已经弄明白了。问题出在迁移中 - 在迁移中创建此对象之后添加了徽标迁移(以及验证)。我将标识添加到Model1.create中!并移动此迁移在这些迁移之后解决错误。
因此,我的迁移大致是:
def change
create_table :... do |t|
t.string :name
t.timestamps
end
然后添加回形针栏
def self.up
change_table :... do |t|
t.attachment :logo
end
end
并将模型添加到他们之后的另一次迁移中。
def migrate(direction)
super
if direction == :up
logo_img = File.open('app/assets/images/logo-big.png', 'rb')
Model1.create!(:name => "TestObj", :logo => logo_img )