【问题标题】:Rails keeping a file in databaseRails 在数据库中保存文件
【发布时间】:2015-11-29 09:16:12
【问题描述】:

我有用户和附件模型

附件模型

create_table :attachments do |t|
  t.attachment :file
  t.belongs_to :user
  t.timestamps null: false
end

我想在附件文件中逐行写入一些数据,例如用户名和用户名,并将其保存在数据库中。如何创建文件?

【问题讨论】:

    标签: ruby-on-rails sqlite ruby-on-rails-4 database-design


    【解决方案1】:

    这是一种方法。在创建附件之前使用活动记录回调设置属性。首先,在附件表中为您想要的数据创建列。

    create_table :attachments do |t|
      t.attachment :file
      t.string :name
      t.string :surname
      t.belongs_to :user
      t.timestamps null: false
    end
    

    然后定义回调。

    models/attachment.rb

    validates :user, presence: true
    
    before_create :update_name_and_surname
    
    def update_name_and_surname
      self.name = self.user.name
      self.surname = self.user.surname
    end
    

    【讨论】:

    • 我只是问我如何在 attachments#create 方法中创建文件以及如何将它们写入文件
    • 当我下载附件时,我想在文件中看到 user.name 和 surname
    • 我假设您使用的是回形针 gem,因为您的迁移具有特定于回形针的 't.attachment' 助手。您可能需要安装一个文件上传 gem,如回形针或carrierwave 来写入和存储文件。如果您不想要 gem,请查看文档的这一部分 guides.rubyonrails.org/v4.0.6/form_helpers.html#uploading-files
    • 我正在使用回形针上传不同的东西。这次我要创建文件
    • path = "your_file/path" data = "data you want to write" File.open(path, "a") do |f| f.write(data) end。也许在你的控制器中有这样的东西。
    猜你喜欢
    • 2015-05-30
    • 2020-12-17
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多