2

I am having a strange error and was hoping someone could point me in the right direction. I have a model called Organizations, and a attribute called department, see the excerpt from the schema below:

t.integer  "department",  default: 0

Inside my model have defined my enums for this attribute, as I am using ActiveRecord::Enum, like below:

enum department: [:conferences, :design_teams, :services, :clubs, :events, :communications]

But when I query, JobPosting.joins(job: :organization).where(organizations: { department: 'conferences' }) I get an error that reads:

PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "conferences"

FYI: An Organization has_many Jobs, and Job has_many JobPostings.

But when I query Organization.where(department: 'conferences') it works.

Any help would be greatly appreciated.

0

3 Answers 3

4

This works on ror5.

JobPosting.joins(job: :organization).where(organizations: 
{ department: Organization.departments['conferences'] }) 

I'm not even sure if enum was available in ror3.

Sign up to request clarification or add additional context in comments.

1 Comment

In RoR 3 enum was not available.
1

Other way is to set text-based enums. In my opinion it is the best way for enum:

DEPARTMENTS_ENUM = [:conferences, :design_teams, :services, :clubs, :events, :communications]
enum department: Hash[*DEPARTMENTS_ENUM.collect{|v| [v, v]}.flatten()]

It will work after department column type will change.

Organization.where(department: 'conferences')

Will work too

Comments

1

I am not directly answering the question but as it is the first link on google when we search PG::InvalidTextRepresentation: ERROR: invalid input value for enum

it can help:

it is possible to declare our enum like this, this way it will not convert the string to an integer but let this job to postgresql.

enum provider: { ig: "ig", fb: "fb", powertrack: "powertrack", gnip: "gnip" }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.