2015-07-16 3 views
0

Je suis nouveau à ruby ​​sur rails. J'essaye de récupérer des données de ma base de données et de faire l'opération dans mon application de rails. Je suis coincé tout en essayant d'utiliser find_by_sql dans mon activité de classe < ActiveRecord :: BaseDonnées de magasin récupérées à la suite de la méthode find_by_sql en ruby ​​sur rails

J'ai un taux table avec structure

id | Instrument Name | Category | Time_of_usage | Rates 
1 | Instrument1  | Internal | Regular  | 25 
2 | Instrument2  | Internal | Weekends  | 15 

Voici mon code échantillon de ce que je suis en train de réaliser

sql2='SELECT Rates FROM New_billcodes_mock WHERE Category_name=?, Instrument_name=? and Time_zone_name=?' 
result2= find_by_sql[sql2,'Internal','Instrument1',time_zone_name] 
database_billrate_value_normal=result2['Rates'] 

et d'utiliser la variable database_billrate_value_normal pour effectuer mes opérations.

Veuillez me guider dans le bon chemin si je me trompe.

Répondre

0

Je ne sais pas si le modèle avec la table de taux est Activity ou NewBillcodeMock ou Rate.

Si c'est le taux, vous devriez être en mesure de faire quelque chose comme ceci:

database_billrate_value_normal = 
    Rate.where("category_name=? AND 
       instrument_name=? AND 
       time_zone_name=?", 
       params[:category_name], 
       params[:instrument_name], 
       params[:time_zone_name]).pluck[:rates] 

... en supposant que vous avez un hachage params avec l'attribut obligatoire des valeurs ce sont les noms d'attributs réels.

Cela retournera un tableau de taux que vous pourrez ensuite manipuler directement dans Ruby si nécessaire.

+0

Le nom de la table est New_billcodes_mock, les valeurs d'attribut que je souhaite récupérer sont des taux. Si je devais utiliser la méthode 'where', quelle serait la classe de la variable database_billrate_value_normal? –

+0

Ruby utilise [dactylographie] (http://rubylearning.com/satishtalim/duck_typing.html), il n'est donc pas nécessaire de taper des variables. Vous devriez également regarder dans les conventions de nommage Rails comme [celui-ci] (http://edgeguides.rubyonrails.org/active_record_basics.html#naming-conventions) pour Active Record et [celui-ci] (http://guides.rubyonrails.org /action_controller_overview.html#controller-naming-convention) pour les contrôleurs. Il y a un certain nombre d'autres très bonnes sources. Commencer avec une connaissance fondamentale des conventions de Rails peut sauver beaucoup de chagrin sur la route. –

+0

J'ai un nom de table 'Times' dans ma base de données, quand j'essaie d'exécuter la requête comme result1 = Times.where ("id =?", "1") Je reçois un message d'erreur "NameError (constante non initialisée Activity :: Times): " –