Rails / Paperclip对象创建问题

时间:2014-04-09 13:22:51

标签: ruby-on-rails paperclip rails-activerecord rails-migrations

我在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")

这是失败的,因为未指定必填字段,如果我明确指定默认图像,则该表还没有必要的列。

如果我在迁移之前删除图像(在本例中为徽标)验证,然后指定图像文件和详细信息(如名称),则会运行此迁移。 有没有更好的方法来设置这个模型?

1 个答案:

答案 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 )