Ruby on rails RubyonRails:如何定义扩展并将其放入数据库?

Ruby on rails RubyonRails:如何定义扩展并将其放入数据库?,ruby-on-rails,Ruby On Rails,我想修改以下代码,以便能够只将文件扩展名写入数据库。现在我阅读了文件内容类型,但我只需要知道扩展名(扩展名可以更改对我来说并不重要)并将其放入数据库。 upload_file_name已经有一个扩展名了,但我需要提取它并将其作为新行放入同一个数据库表中 ActiveRecord::Schema.define(:version => 20120731045929) do create_table "uploads", :force => true do |t| t.str

我想修改以下代码,以便能够只将文件扩展名写入数据库。现在我阅读了文件内容类型,但我只需要知道扩展名(扩展名可以更改对我来说并不重要)并将其放入数据库。 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
结束


而且可以在不带扩展名的情况下保存文件名?

,该扩展名看起来像来自
schema.rb

不要直接碰那个

如果您在
/db/migrations
下查看,您将看到文件名混乱的ruby文件。这些是ruby文件,可用于配置数据库表

  • 首先在数据库中添加一列
在终端中,运行
rails生成迁移添加文件内容类型到上传文件内容类型:string

  • 在Upload.rb模型文件中,将
    file\u content\u type
    添加到attr\u accessible
attr\u可访问:文件内容类型

  • 要查找扩展名,可以使用
    File.extname
因此,也许在您的上传控制器的
创建方法中

def create
  ...
  @upload.file_content_type = File.extname(params[:upload_file_name])
  ...
end

谢谢。如果我需要以下内容怎么办:在上传文件之前,用户可以选择文件并查看要上传的文件的名称。roder中还有一个选择菜单,用于选择文件类别,如“家庭”、“工作”、“外出”、“旅行”等。如何将从用户类别中选择的文件放入数据库?如何将类别选项与数据库绑定?ps。对于文件系列,用户只能选择一个类别。选择框是用html制作的,有一个用于选择标记的rails助手。看看