2014-09-11 2 views
-1

난 레일 3.2.18 및 MySQL 5.6.20에서 작동합니다. 나는 새 테이블을 만드는 마이그레이션을 만들었고 다음과 같이 보입니다.Mysql2 :: 오류 : 알 수없는 열

class CreateRequest < ActiveRecord::Migration 
    def change 
    create_table :requests, id: false do |t| 
     t.string :id,     null: false 
     t.integer :lesson_id,   null: false 
     t.integer :user_id,    null: false 
     t.boolean :approved,   null: false, default: false 
    end 

    add_index :requests, :id, unique: true 
    end 
end 

기본 키로 uuid를 사용하기로 결정했습니다. DB의 새로운 기록을 나는 다음과 같이 작성 :

def create_request(lesson) 
request = Request.new.tap do |req| 
    req.id = SecureRandom.uuid 
    req.lesson_id = lesson.id 
    req.user_id = @user.id 
end 
request.save 
end 

그래서 우리가 요청 모델을 가지고 있고 그것은 두 개의 다른 테이블 레슨 (일대일) ANS 사용자 (일대) 관련이있다. 아니, 나는 모든 모델을 보여줄 것이다.

class PublicizeRequest < ActiveRecord::Base 
    self.table_name = "requests" 
    self.primary_key = "id" 

    has_one  :lesson 
    belongs_to :user 

end 

class Lesson < ActiveRecord::Base 
    (...) 
    belongs_to :publicize_request 
end 

class User < ActiveRecord::Base 
    (...) 
    has_many :publicize_requests 
end 

이제 주요 문제를 설명 할 수 있습니다.

Mysql2::Error: Unknown column 'lessons.request_id' in 'where clause': SELECT `lessons`.* FROM `lessons` WHERE `lessons`.`archived` = 0 AND `lessons`.`request_id` = 'd0da41df-a9be-4575-ada0-538abe1f54a3' LIMIT 1 

내가 : 나는 같은 방법으로 교훈을 얻을하려는 경우 나 오류 다음 얻을

@request.user 

그러나 : 나는 DB에서 요청을 얻고 I 사용자 데이터를 얻기 원한다면 나는이 간단한 작업을 수행 할 수 있습니다 레일에 초보자와 나는 이것을 어떻게 처리 해야할지 모르겠다. 모든 해답을 가져 주셔서 감사합니다.

답변

1

마이그레이션 및 관계 정의가 일치하지 않습니다. 규칙에 외래 키가있는 테이블이 있으면 테이블의 모델에 belongs_to 관계를 정의합니다.

requests 테이블에 lesson_id 열을 정의했습니다. 즉, Request 모델의 크기는 belongs_to :lesson이어야합니다. 당신은 당신이 그것을 정의한 경우 Lesson 모델이 belongs_to :request을 가지고 있다는 것을 의미 것이다 Request 모델 has_one :lesson을 가지고 있기 때문에

class PublicizeRequest < ActiveRecord::Base 
    ... 
    belongs_to :lesson 
    ... 
end 

당신이 오류가 발생하는 이유는,하지만 당신은 lessons 테이블에 request_id 열이없는 .

+0

감사합니다 .. – user2239655