En ce moment, je fais mes requêtes complexes à la main pour ainsi dire. Mais je continue à rencontrer des problèmes. Par exemple.Convertir une requête SQL en Rails
query = "SELECT histories.candidate_id FROM histories WHERE histories.institution_id IN (?) GROUP BY histories.candidate_id HAVING COUNT(*)= ?" cand = [Code.find_by_sql([query,
params['searches'][key], params['searches'][key].size])]
class History < ActiveRecord::Base
belongs_to :candidate
end
create_table "histories", :force => true do |t|
t.string "job_title"
t.date "start_date"
t.date "finish_date"
t.string "basic_salary"
t.string "bonus"
t.integer "institution_id"
t.integer "candidate_id"
t.datetime "created_at"
t.datetime "updated_at"
end
class Candidate < ActiveRecord::Base
# has_and_belongs_to_many :codes
has_many :codes, :through => :CandidatesCodes
has_many :histories
has_many :contacts
has_many :compensations
end
Ceci retourne une liste des ids candidats .. mais veux je veux que ce retour est une liste de candidats comment pourrais-je faire les rails ainsi?
C'est la suggestion de Brians, et je l'ai essayé mais je reçois non initialisée Histoire constante des candidats
cand = History.find(:all,
:joins => :candidates,
:select => "candidates.*",
:conditions => [ "institution_id IN (?)", params['searches'][key] ],
:group => [ "candidate_id HAVING count(*) = ?", params['searches'][key].size ]
)
Pouvez-vous poster votre code de modèle Histoire & Candidat pour voir les relations (peut-être un regard @ vos migrations aiderait aussi). – Brian
Je pense que votre problème réside dans la relation belongs_to dans le modèle History. Les candidats doivent être singuliers. – Brian