Rails不更新新列

时间:2013-12-07 20:58:10

标签: ruby-on-rails sqlite ruby-on-rails-4 ruby-2.0

我最近在Media的数据库(sqlite)中添加了新列,它显示已插入列,但新列不会在Medium.new上更新

我的原始数据库:

    class CreateMedia < ActiveRecord::Migration
       def change
         create_table :media do |t|
            t.string :name
            t.string :location

            t.timestamps
          end
       end
    end

这些列在Media.new

上更新
      class AddMetaToMedia < ActiveRecord::Migration
          def change
            add_column :media, :ext, :string
            add_column :media, :l_mod, :string
            add_column :media, :d_create, :string
           end
         end

我打电话

  Medium.new(name: f, location: str, ext: ex)

ext不会更新到ex = File.extname(f),我知道它通过print语句/控制台有一个值。我打电话给Medium.new错了吗?为什么更新名称和位置而不更新新列?

编辑:这是我的模型,我尝试过使用和不使用attr_accessible / attr_accesor

  class Medium < ActiveRecord::Base
     attr_accessor :ext, :d_create, :l_mod

  end

2 个答案:

答案 0 :(得分:2)

attr_accessor :ext, :d_create, :l_mod从您的模型中删除此行,然后重试。

现在,您在DB中拥有这些属性,因此Rails将自动执行此任务

答案 1 :(得分:2)

主要针对那些后来发现的人...可能还需要在感兴趣的控制器中将新的参数列入白名单