2012-07-17 60 views
0

嘿所以我試圖在模型中使用模型的id屬性,但我無法弄清楚它。在bundle_filename在模型中使用attr

require 'zip/zip' 
require 'zip/zipfilesystem' 

class Lesson < ActiveRecord::Base 
attr_accessible :attachment, :course_id, :goal, :title, :assets_attributes 
belongs_to :course 
has_many :assets, :dependent => :destroy 
accepts_nested_attributes_for :assets, :reject_if => lambda { |a| a[:asset_file_name].blank? } 


def bundle 
bundle_filename = 'public/attachments/#{@lesson.id}.zip' 

Zip::ZipFile.open(bundle_filename, Zip::ZipFile::CREATE) { 
    |zipfile| 
    self.assets.collect { 
    |asset| 
     zipfile.add("#{asset.id}", "public/attachments") 
    } 
} 

File.chmod(0644, bundle_filename) 
self.save 
end 
end 

具有即時問題= 'public/attachments/#{@lesson.id}.zip'

具體@ lesson.id一部分。

有什麼想法?

+0

,你在哪裏設置這個''@ lesson''? – 2012-07-17 12:18:22

回答

1

您應該使用雙引號才能使用#{}來評估字符串中的ruby對象。

bundle_filename = "public/attachments/#{@lesson.id}.zip" 

編輯:您應該定義@lesson地方,或者只是使用self.id如果這是你在找什麼。

0

@lesson似乎沒有設置任何地方。也許你的意思是@lesson作爲你課程的一個實例?如果是這樣,那麼@lesson將自己和你的代碼會讀

bundle_filename = "public/attachments/#{self.id}.zip" 

或只是

bundle_filename = "public/attachments/#{id}.zip"