2012-06-12 5 views
1

내 사이트에서 '할 일'목록이 있습니다. 퀴즈에서 최소한의 성취 수준을 얻은 후에는 사용자의 할일에서 퀴즈가 제거됩니다. 아래의 코드는 제품에 대해서는 올바르게 작동하지만 'BusinessRelationship'을 통해 나열된 퀴즈에는 해당되지 않습니다.MySQL 쿼리가 작동하지 않습니다.

def not_quizzed_things 
    taken_company_ids = quizzes_taken.select{|q| q.thing_type == 'BusinessRelationship'}.map{|q| q.thing_id}.uniq 
    conds = "business_relationships.from_company_id = ? and (business_relationships.legit_quiz_questions_count + c.legit_quiz_questions_count) > 0" 
    args = [company_id] 
    unless taken_company_ids.blank? 
    conds += " and c.id not in (?)" 
    args << taken_company_ids 
    end 

    quiz_companies = BusinessRelationship.find(:all, :joins => "join companies c on c.id = business_relationships.to_company_id", :conditions => [conds]+args, :order => "id", :limit => 0) 
    quiz_companies = [company] + quiz_companies unless company.legit_quiz_questions_count <= 0 || quizzes_taken.select{|q| q.thing_type == 'Company'}.map{|q| q.thing}.include?(company) 
    n = 20 - quiz_companies.size 

    taken_products_retailer_ids = quizzes_taken.select{|q| q.thing_type == 'ProductsRetailer'}.map{|q| q.thing_id}.uniq 
    conds = "products_retailers.company_id = ? and (p.legit_quiz_questions_count + products_retailers.legit_quiz_questions_count) > 0" 
    args = [company_id] 
    unless taken_products_retailer_ids.blank? 
    conds += " and products_retailers.id not in (?)" 
    args << taken_products_retailer_ids 
    end 
quiz_products_retailers = ProductsRetailer.find(:all, :joins => "join products p on p.id = products_retailers.product_id", :conditions => [conds]+args, :order => "id", :limit => n) 
quiz_companies + quiz_products_retailers 
end 

콘솔 결과 :

ruby-1.8.7-p352 :007 > y u.quizzes_taken.last 
--- !ruby/object:Quiz 
attributes: 
    thing_id: "213" 
    created_at: 2012-06-09 20:07:32 
    end_time: 2012-06-09 20:07:56 
    current_attempt_id: 
    thing_type: BusinessRelationship 
    updated_at: 2012-06-09 20:07:56 
    order: "2388,2389,2390,2391" 
    id: "467" 
    correct_count: "4" 
    user_id: "392" 
    attempt_count: "4" 
    start_time: 2012-06-09 20:07:32 
attributes_cache: {} 

어떤 생각이나 제안이 크게 감사합니다!

답변

0

DB로 보내진 정확한 SQL을보기 위해 디버그 창을보고 원하는대로 쿼리가 나오지 않는지 확인합니다. 데이터베이스에서 코드로 다시 작업하십시오.

관련 문제