![](/img/trans.png)
[英]PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer
[英]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.