単一引用符は、PostgreSQL (および SQL 標準を尊重するふりをしている他のすべての SQL データベース) で文字列を引用するために使用されるため、次のようなことを言っています。
some_string = some_integer
これを行うとき:
'employeedetails_id'=25
それは意味がありません。明示的な型キャストなしでは、文字列と整数を比較することはできません。その識別子を引用する必要はまったくありません。
ActiveRecord::Base.connection.select_value(%q{
select count(*)
from leave_details
where status = 'Pending'
and employeedetails_id = 25
})
識別子を引用する必要さえある場合 (大文字と小文字が区別されるか、スペースが含まれている可能性があります)、PostgreSQL では二重引用符を使用します。
どうやら、"EmployeeDetails_id"
大文字と小文字を区別するように列を作成したようです。つまり、常にそのケースを使用する必要があり、常に二重引用符で囲む必要があります。
ActiveRecord::Base.connection.select_value(%q{
select count(*)
from leave_details
where status = 'Pending'
and "EmployeeDetails_id" = 25
})
大文字と小文字が混在する識別子を使用しないようにテーブルを作り直すことをお勧めします。
- これらは、標準の Ruby/Rails の命名法に反します。
- それらを使用するすべての場所で、大文字と小文字が混在する列名を二重引用符で囲む必要があります。
- それらは、PostgreSQL の標準的な慣行に反します。
これは何度もあなたをつまずかせるでしょう。