0

我想修改以下代码,以便能够仅将文件扩展名写入数据库。现在我阅读了file_content_type,但我只需要知道扩展名(扩展名可以更改对我来说并不重要)并将其放入数据库中。upload_file_name 已经有一个扩展名,但我需要提取它并将其作为新行放在同一个数据库表中。

ActiveRecord::Schema.define(:version => 20120731045929) do

  create_table "uploads", :force => true do |t|
    t.string   "upload_file_name"
    t.string   "upload_content_type"
    t.string   "user"
    t.integer  "upload_file_size"
    t.datetime "upload_updated_at"
    t.datetime "created_at",          :null => false
    t.datetime "updated_at",          :null => false
  end

结尾

并且有可能以某种方式保存没有扩展名的文件名?

4

1 回答 1

0

好像是从schema.rb.

不要直接接触那个。

如果你往下看,/db/migrations你会看到文件名看起来很乱的 ruby​​ 文件。这些是允许您配置数据库表的 ruby​​ 文件。

  • 首先在数据库中添加一列。

在终端中,运行rails generate migration add_file_content_type_to_uploads file_content_type:string

  • 在 Upload.rb 模型文件中,添加file_content_type到 attr_accessible

attr_accessible :file_content_type

  • 要查找扩展名,您可以使用File.extname.

所以也许在你create的上传控制器方法中

def create
  ...
  @upload.file_content_type = File.extname(params[:upload_file_name])
  ...
end
于 2012-11-08T18:52:54.997 回答