2011-09-19 22 views
1

我有一個表單,當它發佈時,它的一些數據使用rails模型保存到數據庫中。與數據庫一起,我需要將一些內容存儲到文件中。我可以增強模型中的「保存」方法以將內容寫入文件嗎?這是一個很好的設計。如果不是什麼將是理想的設計。rails活動模型將數據與數據庫一起存儲在文件中

繼續此操作,我想在應用程序配置中設置存儲此文件的位置。哪個文件,我應該定義這個變量文件的位置以及如何訪問它在模型/控制器

感謝 基蘭

回答

0

當然你也可以使用現有的,現成的文件附件的圖書館之一如paperclipcarrierwave

否則,您可以:

# 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)。

+0

非常感謝。所以我認爲還有一個「after_save」命令。我想要做的是,插入到數據庫中,獲取插入記錄的「id」,然後在特定於應用程序的存儲中創建一個具有該id的文件。這幫助了我。我將執行這一個 – kiran

+0

你也可以絕對使用'after_save'。乾杯! – yfeldblum

相關問題