2009-05-08 10 views
0

Pour la vie de moi, je n'arrive pas à comprendre comment procéder. J'ai un modèle pour lequel la valeur stockée est un chemin d'accès à une ressource sur le système de fichiers. Je voudrais que le modèle écrive et récupère la ressource à partir du système de fichiers, donc je veux naturellement contourner le getter et les setters pour le faire. Comment puis-je obtenir la valeur sous-jacente dans la base de données?Substitution d'un attribut dans Rails et obtention de la valeur sous-jacente

class MyModel < ActiveRecord::Base 
    require 'fileutils' 
    def myThing=(val) 
    handle = File.open(_____, 'w') 
    handle.write(val) 
    end 
end 

Que se passe-t-il où les traits de soulignement sont? J'ai vu 'write_attribute' utilisé pour faire cela, mais il semble être obsolète. Des idées? Idem pour le getter, bien sûr.

En outre, si j'aboie le mauvais arbre concernant le dépassement, j'aimerais entendre la meilleure technique. La seule chose qui n'est pas une option est de stocker la valeur directement dans la base de données.

Merci!

Répondre

1

Cela devrait le faire:

handle = File.open(attributes["myThing"]) 

je penserais à propos de renommer la colonne "my_thing_path" (ou myThingPath, si vous devez), cependant.

+2

OP, ici. Bien que cette réponse n'ait pas fonctionné pour ma version de Rails, elle m'a mis sur la bonne voie. self ["myThing"] semble avoir fonctionné! – Mike