मानक SQL स्ट्रिंग्स सिंगल कोट्स का उपयोग करती हैं, डबल कोट्स पहचानकर्ताओं के लिए हैं (जैसे टेबल और कॉलम नाम); PostgreSQL यहां मानक का पालन करता है, MySQL और SQLite कम सख्त हैं, अन्य डेटाबेस अलग-अलग मात्रा में सख्ती के साथ अन्य काम करते हैं। किसी भी स्थिति में, SQL स्ट्रिंग अक्षर के लिए सिंगल कोट्स हर जगह समान रूप से काम करना चाहिए।
आप SQL स्ट्रिंग पर दोहरे उद्धरण चिह्नों का उपयोग कर रहे हैं:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^
आपको एकल उद्धरण अवश्य देने चाहिए:
@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
या इसका आधुनिकीकरण करें और ActiveRecord को उद्धरण से निपटने दें:
@holidays = Holiday.where(:state => 'requested')
आपको शायद इसके लिए उद्धरण को भी ठीक करना होगा:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
फिर से, इसका आधुनिकीकरण करना सबसे आसान तरीका है:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
मैं अनुमान लगा रहा हूं कि आप SQLite पर विकास कर रहे हैं लेकिन PostgreSQL पर तैनात कर रहे हैं। यह एक बुरा विचार है, हमेशा एक ही स्टैक पर विकसित और परिनियोजित करें।