6

Nie mogę użyć atrybutu model.update_attribute na atrybucie, który jest montowany przez program wysyłający carrierwave. Instrukcja SQL nie przyjmuje wartości i dodaje NULL do elementu zastępczego. Jeśli usuniemy instrukcję mount_uploader z klasy modelu, to działa ona normalnie. Zajmuję się rozwiązywaniem problemów z konsoli i próbuję dodać pewne atrybuty podczas rozsiewania bazy danych, a to przeszkadza moim staraniom. Pomysły?Ręczne aktualizowanie atrybutów zainstalowanych przez program ładujący Carrierwave

Dzięki.

Aktualizacja: odpowiedni kod:

class Profile < ActiveRecord::Base 
    belongs_to :user 
    has_and_belongs_to_many :sports 
    has_and_belongs_to_many :interests 
    has_and_belongs_to_many :minors 
    has_and_belongs_to_many :majors 
    has_and_belongs_to_many :events 
    has_and_belongs_to_many :groups 
    attr_accessible :description, :username, :avatar, :bio, :first_name, :last_name, :major, :minor, :graduation_date, :living_situation, :phone, :major_ids, :minor_ids, :sport_ids 
    mount_uploader :avatar, AvatarUploader 
end 

Ja po prostu próbuje przepisać Avatar ciąg z pliku db nasion i podczas testowania z konsoli szyn tak: Profile.first.update_attribute (: awatar, "foo")

Oba działają, gdy skomentuję linię mount_uploader.

Czy dodanie metody mount_uploader powoduje zatrzymanie łańcucha lub uczynienie go niezmiennym?

+0

Byłoby pomocne, jeśli pisać kod, który próbujesz uruchomić. Jaką wartość próbujesz ustawić dla atrybutu? – lmars

Odpowiedz

7

Znalazłem rozwiązanie tego.

Mój problem polegał na tym, że nie mogłem zmienić atrybutu zamontowanego na moim narzędziu do przesyłania plików CarrierWave z pliku seeds.rb.

to działa:

user.profile.update_column(:avatar, 'foobar/image.png')