Je crains vraiment les trouveurs de Rails en plus des plus évidents. Je recours toujours à SQL quand les choses deviennent plus avancées queRecherche avancée dans Rails
Model.find(:all, :conditions => ['field>? and field<? and id in (select id from table)', 1,2])
Je cette méthode:
def self.get_first_validation_answer(id)
a=find_by_sql("
select answers.*, answers_registrations.answer_text
from answers_registrations left join answers on answers_registrations.answer_id=answers.id
where
(answers_registrations.question_id in (select id from questions where validation_question=true))
and
(sale_registration_id=#{id})
limit 1
").first
a.answer_text || a.text if a
end
Quelqu'un peut-il créer une méthode de recherche qui me fait ce que je veux?
Cordialement,
Jacob
Comment sont vos modèles définis? Quelles sont les associations (belongs_to, has_many, etc.)? –
Pas une réponse, mais je vois que vous faites une interpolation variable dans votre appel find_by_sql pour placer l'ID en tant que paramètre à votre instruction where. Cette approche est sujette à l'injection SQL. Essayez d'utiliser les éléments suivants pour éviter cela: find_by_sql ['select ... where ... and sale_registration_id =?', Id] – Faisal
Faisal> Je sais - J'ai modifié l'exemple et j'ai simplement choisi la méthode la plus simple. Merci pour le conseil, cependant. – jriff