簡體   English   中英

ActiveRecord::Enum - PG::InvalidTextRepresentation:錯誤:整數輸入語法無效:

[英]ActiveRecord::Enum - PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer:

我有一個奇怪的錯誤,希望有人能指出我正確的方向。 我有一個名為 Organizations 的模型和一個名為department的屬性,請參閱以下架構的摘錄:

t.integer  "department",  default: 0

在我的模型中為這個屬性定義了我的枚舉,因為我使用的是ActiveRecord::Enum ,如下所示:

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

但是當我查詢時, JobPosting.joins(job: :organization).where(organizations: { department: 'conferences' })我收到一個錯誤消息:

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

僅供參考:一個組織有_many Jobs,而Job has_many JobPostings。

但是當我查詢Organization.where(department: 'conferences')它工作。

任何幫助將不勝感激。

這適用於 ror5。

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

我什至不確定enum在 ror3 中是否可用

另一種方法是設置基於文本的枚舉。 在我看來,這是枚舉的最佳方式:

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

它會在部門列類型更改后起作用。

Organization.where(department: 'conferences')

也會工作

我沒有直接回答這個問題,但是當我們搜索PG::InvalidTextRepresentation: ERROR: invalid input value for enum時,它是 google 上的第一個鏈接

它可以幫助:

可以像這樣聲明我們的枚舉,這樣它就不會將字符串轉換為整數,而是讓這個工作交給 postgresql。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM