2013-01-08 20 views
16

mam dwa modele tak: -kopiować rubinowo spinacz do paznokci z jednego modelu do drugiego?

model 1 - Karta - zawiera reprezentację danych odsetek na przedniej stronie
mocowania name = cardimage
Model 2 - użytkownik - zawiera użytkownika nazwę
mocujący = awatar

Kiedy tworzę! nowa karta, chcę, aby awatar z modelu użytkownika został skopiowany do modelu karty jako nowy obraz karty.

Czy istnieje prosty wkład do tego?

Ruby/Rails/spinacza

+0

możliwy duplikat http://stackoverflow.com/questions/2739839/how-to-copy-a-file-using-paperclip – cih

+1

Czy chcesz przechowywać załącznik dwukrotnie? Jeśli Twój model Użytkownika jest powiązany z Modelem Karty, możesz uniknąć duplikowania. – cih

+0

Ten przykład to kopiowanie z jednego profilu użytkownika do innego. Potrzebne jest skopiowanie obrazu do innego modelu. – Gary

Odpowiedz

31

To powinno wystarczyć, można użyć after_create zwrotnego jeśli modele są powiązane, jeśli nie polecam zrobić go w akcji kontrolera, który tworzy kartę.

instance_of_model_one.cardimage = instance_of_model_two.avatar 
instance_of_model_one.save 
+0

Działa to poprawnie. Próbowałem początkowo z nazwą pliku, ale tylko ta metoda jest prawidłowa, spinacz dobrze obsługuje resztę, z poprawnym identyfikatorem itp. Dziękuję. – Gary

+0

Żadnych problemów, z przyjemnością. – cih

+0

Myślę, że potrzebujesz 'instance_of_model_two.avatar.dup' –

2
old_avatar = model1.avatar; 
model2.avatar.create(attachment: old_avatar.attachment); 
model2.save; 

on pracował dla mnie.

Powiązane problemy