1
我有一個表單,當它發佈時,它的一些數據使用rails模型保存到數據庫中。與數據庫一起,我需要將一些內容存儲到文件中。我可以增強模型中的「保存」方法以將內容寫入文件嗎?這是一個很好的設計。如果不是什麼將是理想的設計。rails活動模型將數據與數據庫一起存儲在文件中
繼續此操作,我想在應用程序配置中設置存儲此文件的位置。哪個文件,我應該定義這個變量文件的位置以及如何訪問它在模型/控制器
感謝 基蘭
我有一個表單,當它發佈時,它的一些數據使用rails模型保存到數據庫中。與數據庫一起,我需要將一些內容存儲到文件中。我可以增強模型中的「保存」方法以將內容寫入文件嗎?這是一個很好的設計。如果不是什麼將是理想的設計。rails活動模型將數據與數據庫一起存儲在文件中
繼續此操作,我想在應用程序配置中設置存儲此文件的位置。哪個文件,我應該定義這個變量文件的位置以及如何訪問它在模型/控制器
感謝 基蘭
當然你也可以使用現有的,現成的文件附件的圖書館之一如paperclip和carrierwave。
否則,您可以:
# config/application.rb
# ...
config.my_app.cache_file_prefix = "/tmp/files"
# app/models/my_model.rb
class MyModel < ActiveRecord::Base
# Causes ActiveRecord to run this method
# before saving (creating or updating).
before_save :copy_to_file
private
def copy_to_file
# Write data to the file.
file_name = copy_to_file_name
File.open(file_name) do |f|
f.write("some data")
end
end
def copy_to_file_name
# Calculate and return the expected file name.
prefix = Rails.configuration.my_app.cache_file_prefix
"#{prefix}/#{id}"
end
end
請注意,一旦你運行Rails應用程序在多臺服務器這一解決方案將無法工作。您應該考慮使用對象存儲提供程序(如S3或Rackspace)或複製或分佈式文件系統(如DRDB或GlusterFS)。
非常感謝。所以我認爲還有一個「after_save」命令。我想要做的是,插入到數據庫中,獲取插入記錄的「id」,然後在特定於應用程序的存儲中創建一個具有該id的文件。這幫助了我。我將執行這一個 – kiran
你也可以絕對使用'after_save'。乾杯! – yfeldblum