Find_by_sql et attributes

Bonjour à tous. Petite question de débutant qui se lance dans Ruby on
Rails ave plaisir… Je voudrais recréer les attributs de mes variables
récupérées indirectement par find_by_sql car je ne peux pas les inférer
directement puisque elles doivent avoir la même clef.
Je passe par un hash, mais au debug, les objets all et first n’ont pas
la même structure (manque attributes:). Peut-on faire autrement ? Le but
est bien sûre de manipuler ensuite les variables d’instances par
xxx.snap_id.

Merci à tous

def initialize
super
res = Mysnap.find_by_sql [“Select min(SNAP_ID) as first_one,
max(SNAP_ID) as last_one From SNAPS”]
@first ={}
@last ={}
@first[:snap_id] = res[0].first_one
@last[:snap_id] = res[0].last_one
@all = Mysnap.find_by_sql [“Select SNAP_ID as snap_id From SNAPS”]
end

— !ruby/object:Snap
all:

  • !ruby/object:Mysnap
    attributes:
    snap_id: 1
    attributes_cache: {}

  • !ruby/object:Mysnap
    attributes:
    snap_id: 2
    attributes_cache: {}

first:
:snap_id: 1
last:
:snap_id: 2

Tu peux faire:

Snap.first
Snap.last

Si l’ordre choisi ne te plait pas:

Snap.first(:order => “created_at desc”)
Snap.last(:order => “created_at desc”)

C’est beau, non?

Bienvenu dans l’univers Rails :slight_smile:

Cyrille

On Jul 25, 9:54 am, Hilbert A. [email protected]