क्लोनिंग मैं UserFile
कि belongs_to
एक Folder
एक मॉडल है:मान्यता को नजरअंदाज कर दिया जब एक नव निर्मित रिकॉर्ड
class UserFile < ActiveRecord::Base
has_attached_file :attachment
belongs_to :folder
validates_attachment_presence :attachment
validates_presence_of :folder_id
def copy(target_folder)
new_file = self.clone
new_file.folder = target_folder
new_file.save!
end
end
निम्न परीक्षण अप्रत्याशित रूप से विफल रहता है: का उपयोग करते समय एक नव निर्मित
test 'cannot copy a file to anything other than a folder' do
folder = Factory(:folder)
file1 = UserFile.create(:attachment => File.open("#{Rails.root}/test/fixtures/textfile.txt"), :folder => Folder.root)
file2 = UserFile.find(file1)
# Should pass, but fails
assert_raise(ActiveRecord::RecordInvalid) { file1.copy(nil) }
# Same record, but this DOES pass
assert_raise(ActiveRecord::RecordInvalid) { file2.copy(nil) }
assert file1.copy(folder)
end
validates_presence_of :folder_id
नजरअंदाज कर दिया है ऑब्जेक्ट, लेकिन जब मैं ActiveRecord#find
करता हूं तो यह काम करता है। मुझे लगता है कि clone
को copy
विधि में कॉल करने के साथ कुछ करना है, लेकिन मैं इसे समझ नहीं सकता। क्या किसी को पता है कि क्या हो रहा है या परीक्षा पास कैसे करें ??
'file1' userfile का एक उदाहरण है लेकिन' file2' आप 'का उपयोग कर रहे UserFile.find (file1) के लिए' जोड़कर हल किया जाता है, मैं लगता है 'UserFile.find (file1.id) ' – JCorcuera
इससे कोई फर्क नहीं पड़ता। आप या तो 'UserFile.find (file1.id) 'या' UserFile.find (file1) 'का उपयोग कर सकते हैं। एक ही बात है। – Mischa
क्या यह आपके विचार के कारण अपवाद उठा रहा है? शायद, आपका सत्यापन किसी भी मामले में काम नहीं कर रहा है, लेकिन दूसरी बचत पर एक अलग सत्यापन विफल हो रहा है - एक अद्वितीय कॉलम में डुप्लिकेट मान के कारण, शायद? –