我最近在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
答案 0 :(得分:2)
attr_accessor :ext, :d_create, :l_mod
从您的模型中删除此行,然后重试。
现在,您在DB中拥有这些属性,因此Rails将自动执行此任务
答案 1 :(得分:2)
主要针对那些后来发现的人...可能还需要在感兴趣的控制器中将新的参数列入白名单