데이터베이스 필드는 정수가되지 않습니다-Rails / Postgres

jjrgjbdmzkve

Railscast에 따라 광범위하게 조인 테이블을 만들고 있습니다 . http://railscasts.com/episodes/17-habtm-checkboxes-revised?view=asciicast

개체에 has_many 레코드를 설정할 수없고 다음 오류가 발생합니다.

2.0.0p353 :012 > invoice.fly_ids
   (0.9ms)  SELECT "flies".id FROM "flies" INNER JOIN "categorizations" ON "flies"."id" = "categorizations"."fly_id" WHERE "categorizations"."invoice_id" = 1
ActiveRecord::StatementInvalid: PG::Error: ERROR:  operator does not exist: integer = character varying
LINE 1: ...ies" INNER JOIN "categorizations" ON "flies"."id" = "categor...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "flies".id FROM "flies" INNER JOIN "categorizations" ON "flies"."id" = "categorizations"."fly_id" WHERE "categorizations"."invoice_id" = 1

나는 그것을 작동시킬 수 없으며 'categorizations'테이블이 정수 대신 varchar를 사용하기 때문 이라고 생각 합니다.

내 마이그레이션 파일은 다음과 같습니다.

class CreateCategorizations < ActiveRecord::Migration
  def change
    create_table :categorizations do |t|
      t.integer :user_id
      t.integer :fly_id

      t.timestamps

      add_index :categorizations, :user_id
      add_index :categorizations, :fly_id
    end
  end
end

그러나 생성 된 데이터베이스 테이블을 보면 : user_id와 : fly_id가 모두 varchar입니다.

마이그레이션 파일에서 정수를 지정할 때 이러한 필드를 varchar로 만드는 이유는 무엇입니까?

(이게 작동하더라도 문제가 해결되지 않을 수 있습니다 ...)

편집하다:

사용자 모델 :

class User < ActiveRecord::Base

....
has_many :invoices
....
end

송장 모델 :

class Invoice < ActiveRecord::Base
  attr_accessible :active
  validates :user_id, presence: true
  belongs_to :user

  has_many :categorizations
  has_many :flies, through: :categorizations
end

송장 마이그레이션 :

class CreateInvoices < ActiveRecord::Migration
  def change
    create_table :invoices do |t|
      t.boolean :active
      t.integer :user_id

      t.timestamps
    end
    add_index :invoices, :user_id
  end

end

분류 모델 :

class Categorization < ActiveRecord::Base
  attr_accessible :fly_id, :user_id

  belongs_to :invoice
  belongs_to :fly
end

분류 마이그레이션 :

class CreateCategorizations < ActiveRecord::Migration
  def change
    create_table :categorizations do |t|
      t.integer :user_id
      t.integer :fly_id

      t.timestamps

      add_index :categorizations, :user_id
      add_index :categorizations, :fly_id
    end
  end
end

비행 모형 :

class Fly < ActiveRecord::Base
  attr_accessible :description, :name
  validates :description, :name, presence: true

  has_many :categorizations
  has_many :invoices, through: :categorizations
end

플라이 마이그레이션 :

class CreateFlies < ActiveRecord::Migration
  def change
    create_table :flies do |t|
      t.string :name
      t.string :description

      t.timestamps
    end
  end
end
리처드 펙

HABTM

HABTM을 사용하는 경우 테이블에 기본 키 ( id) 가 필요하지 않습니다 .

create_table :invoices_flies, :id => false do |t|
  t.references :user
  t.references :flies
end

has_many : through

을 사용하는 경우 has_many :through테이블은 자체 모델이므로 기본 키를 사용합니다.

#app/models/user.rb
Class User < ActiveRecord::Base
    has_many :categorizations
    has_many :flies, through: :categorizations
end

#app/models/fly.rb
Class Fly < ActiveRecord::Base
    has_many :categorizations
    has_many :users, through: :categorizations
end

#app/models/categorization.rb
Class Categorization < ActiveRecord::Base
    belongs_to :fly
    belongs_to :user
end

create_table :categorizations do |t|
  t.integer :user_id
  t.integer :fly_id
end

귀하의 문제는 아마도 귀하의 협회 구조와 관련이있을 것입니다. 어떻게 설정했는지에 대한 정보를 제공해 주시겠습니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ruby on Rails는 데이터베이스에 쓰지 않습니다.

분류에서Dev

Github Actions Rails Postgres 데이터베이스 "테스트"가 존재하지 않습니다.

분류에서Dev

django 필터 postgres json 필드 변수가 정의되지 않았습니다.

분류에서Dev

PHP는 Postgres 데이터베이스의 가치를 높일 수 없습니다.

분류에서Dev

Rails 4-다 대다 카테고리는 데이터베이스에 저장되지 않습니다.

분류에서Dev

Rails 앱용 Postgres 데이터베이스를 수동으로 생성하는 방법은 무엇입니까?

분류에서Dev

Postgres-필수 데이터베이스

분류에서Dev

Postgres-필수 데이터베이스

분류에서Dev

python manage.py migrate는 postgres 데이터베이스를 변경하지 않습니다.

분류에서Dev

Rails 5 및 MongoDB : 데이터베이스 어댑터에 'sqlite3'을 지정했지만 gem이로드되지 않았습니다.

분류에서Dev

Docker | Postgres 데이터베이스가 초기화되지 않았고 수퍼 유저 암호가 지정되지 않았습니다.

분류에서Dev

Docker | Postgres 데이터베이스가 초기화되지 않았고 수퍼 유저 암호가 지정되지 않았습니다.

분류에서Dev

Ruby on Rails : API에서 JSON 데이터를 가져와 Postgres 데이터베이스에 저장하려고합니다. 레이크가 중단되었습니다! TypeError : String을 Integer로 암시 적으로 변환하지 않습니다.

분류에서Dev

Rails Country_select는 데이터베이스에 저장할 수 없습니다.

분류에서Dev

Rails- Create 액션은 데이터베이스에 레코드를 저장하지 않습니다.

분류에서Dev

Django : DISTINCT ON 필드는이 데이터베이스 백엔드에서 지원되지 않습니다.

분류에서Dev

django / postgres 오류 : '데이터베이스 XX가 존재하지 않습니다'

분류에서Dev

django는 postgres 데이터베이스에 모델 필드 수동 추가

분류에서Dev

다른 데이터베이스 필드를받을 수있는 동안 데이터베이스에서 ID 수신이 작동하지 않습니다.

분류에서Dev

Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

분류에서Dev

데이터는 MySQL 데이터베이스에 저장되지 않습니다.

분류에서Dev

데이터는 데이터베이스에 저장되지 않습니다.

분류에서Dev

AWS Lambda는 PG.js를 통해 RDS Postgres 데이터베이스에 연결합니다 (연결이 설정되고 시간 제한이 없지만 데이터베이스가 없습니까?).

분류에서Dev

Ruby on Rails : 숨겨진 필드 값이 데이터베이스에 삽입되지 않음

분류에서Dev

Rails, Carrierwave로 여러 이미지를 업로드하지만 JSON이 내 데이터베이스에서 지원되지 않습니다.

분류에서Dev

Rails는 데이터베이스에 새 레코드를 생성하지 않음

분류에서Dev

Rails 데이터베이스에서 작동하지 않는 CSV 시드

분류에서Dev

Rails 4-Rails 4의 데이터베이스에있는 테이블에 연결할 수 없습니다.

분류에서Dev

끝없는 / 종료되지 않는 데이터베이스 쿼리-Rails

Related 관련 기사

  1. 1

    Ruby on Rails는 데이터베이스에 쓰지 않습니다.

  2. 2

    Github Actions Rails Postgres 데이터베이스 "테스트"가 존재하지 않습니다.

  3. 3

    django 필터 postgres json 필드 변수가 정의되지 않았습니다.

  4. 4

    PHP는 Postgres 데이터베이스의 가치를 높일 수 없습니다.

  5. 5

    Rails 4-다 대다 카테고리는 데이터베이스에 저장되지 않습니다.

  6. 6

    Rails 앱용 Postgres 데이터베이스를 수동으로 생성하는 방법은 무엇입니까?

  7. 7

    Postgres-필수 데이터베이스

  8. 8

    Postgres-필수 데이터베이스

  9. 9

    python manage.py migrate는 postgres 데이터베이스를 변경하지 않습니다.

  10. 10

    Rails 5 및 MongoDB : 데이터베이스 어댑터에 'sqlite3'을 지정했지만 gem이로드되지 않았습니다.

  11. 11

    Docker | Postgres 데이터베이스가 초기화되지 않았고 수퍼 유저 암호가 지정되지 않았습니다.

  12. 12

    Docker | Postgres 데이터베이스가 초기화되지 않았고 수퍼 유저 암호가 지정되지 않았습니다.

  13. 13

    Ruby on Rails : API에서 JSON 데이터를 가져와 Postgres 데이터베이스에 저장하려고합니다. 레이크가 중단되었습니다! TypeError : String을 Integer로 암시 적으로 변환하지 않습니다.

  14. 14

    Rails Country_select는 데이터베이스에 저장할 수 없습니다.

  15. 15

    Rails- Create 액션은 데이터베이스에 레코드를 저장하지 않습니다.

  16. 16

    Django : DISTINCT ON 필드는이 데이터베이스 백엔드에서 지원되지 않습니다.

  17. 17

    django / postgres 오류 : '데이터베이스 XX가 존재하지 않습니다'

  18. 18

    django는 postgres 데이터베이스에 모델 필드 수동 추가

  19. 19

    다른 데이터베이스 필드를받을 수있는 동안 데이터베이스에서 ID 수신이 작동하지 않습니다.

  20. 20

    Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

  21. 21

    데이터는 MySQL 데이터베이스에 저장되지 않습니다.

  22. 22

    데이터는 데이터베이스에 저장되지 않습니다.

  23. 23

    AWS Lambda는 PG.js를 통해 RDS Postgres 데이터베이스에 연결합니다 (연결이 설정되고 시간 제한이 없지만 데이터베이스가 없습니까?).

  24. 24

    Ruby on Rails : 숨겨진 필드 값이 데이터베이스에 삽입되지 않음

  25. 25

    Rails, Carrierwave로 여러 이미지를 업로드하지만 JSON이 내 데이터베이스에서 지원되지 않습니다.

  26. 26

    Rails는 데이터베이스에 새 레코드를 생성하지 않음

  27. 27

    Rails 데이터베이스에서 작동하지 않는 CSV 시드

  28. 28

    Rails 4-Rails 4의 데이터베이스에있는 테이블에 연결할 수 없습니다.

  29. 29

    끝없는 / 종료되지 않는 데이터베이스 쿼리-Rails

뜨겁다태그

보관