[Rails] Mysql2::Error:Unknown column(팔로우 기능)
소개
이 기사에서는 팔로우 기능 도입 중에 발생한 오류
내가 한 해결책을 설명합니다.
어제도 팔로우 기능을 구현하고 드디어 끝 같은 느낌입니다.
마지막 기사입니다.
오류 내용
ActiveRecord::StatementInvalid in ~
Mysql2::Error:Unknown column 'relationships.user_id' in 'where clause'
라는 오류가 발생했습니다.
clause=句
라는 의미인 것 같습니다. (Google 선생님)
내용으로서는 'relationships.user_id'라는 컬럼은 모른다.
라고 말합니다.
? ?
코드
routes.rbRails.application.routes.draw do
devise_for :users
root to: 'foods#index'
resources :foods do
collection do
get :search
end
resource :likes, only: [:create, :destroy]
end
resources :users do
resources :relationships, only: [:create, :destroy]
get :followings, on: :member
get :followers, on: :member
end
end
팔로우 기능이므로 User 모델
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
該当箇所のみ
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
원인 규명
잘 모르기 때문에, 우선, 분노하고 있는 곳을 통째로 지워 보았습니다.
コメントアウトしてみた
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%#= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
그러자 브라우저가 코멘트 아웃했을 때 뽑아 무사히 표시되었습니다.
<%= link_to @user.followers.count, followers_user_path(@user) %>
여기가 표시되었으므로,
원인은
<%= link_to @user.followings.count, followings_user_path(@user) %>
이라는 것이 판명.
형태는 followers
에서는 문제 없었기 때문에,
모델이나 컨트롤러가 아닌지 찾았습니다.
결과
모델이었습니다.
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships ←ここ!!
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships, foreign_key: :following_id
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
has_many :relationships
foreign_key: :following_id
를 작성할 수 없습니다.
외래 키 (foreign key)
【SQL 입문】외부 키란? 기본 키와의 관계 및 작성 방법에 대해 설명
외래 키 (FOREIGN KEY)는
관련 테이블간을 연결하기 위해 설정하는 열로 데이터의 무결성을 데이터베이스에 보증시키기 위해서 이용합니다.
설정을 잊었기 때문에 following이 공중에 떠 있던 느낌 이군요.
끝에
원래 앱에서 Docker를 다루고 싶었기 때문에,
Docker 학습을 시작했습니다.
조금 어렵고 머리가 혼란 스럽지만,仮想
라는 말을 좋아하고 흥미는 끓고 있습니다.
YouTube에서 이 사람과 같은 일을 했습니다.
좋으면 봐주세요.
Docker 초입문 강좌 합병판 | 처음부터 실천하는 4시간의 풀코스
이번 참고 기사입니다.
Mysql2::Error: Unknown column 'favorites.true' in 'where clause' 해결 방법
내일은 일요일이지만,
계속해서 Docker의 학습도 노력합니다!
어딘가의 타이밍에 Docker의 기사도 쓰고 싶다!
Reference
이 문제에 관하여([Rails] Mysql2::Error:Unknown column(팔로우 기능)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkato1013/items/fe6aed5ea4e38cf109ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ActiveRecord::StatementInvalid in ~
Mysql2::Error:Unknown column 'relationships.user_id' in 'where clause'
라는 오류가 발생했습니다.
clause=句
라는 의미인 것 같습니다. (Google 선생님)내용으로서는 'relationships.user_id'라는 컬럼은 모른다.
라고 말합니다.
? ?
코드
routes.rbRails.application.routes.draw do
devise_for :users
root to: 'foods#index'
resources :foods do
collection do
get :search
end
resource :likes, only: [:create, :destroy]
end
resources :users do
resources :relationships, only: [:create, :destroy]
get :followings, on: :member
get :followers, on: :member
end
end
팔로우 기능이므로 User 모델
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
該当箇所のみ
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
원인 규명
잘 모르기 때문에, 우선, 분노하고 있는 곳을 통째로 지워 보았습니다.
コメントアウトしてみた
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%#= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
그러자 브라우저가 코멘트 아웃했을 때 뽑아 무사히 표시되었습니다.
<%= link_to @user.followers.count, followers_user_path(@user) %>
여기가 표시되었으므로,
원인은
<%= link_to @user.followings.count, followings_user_path(@user) %>
이라는 것이 판명.
형태는 followers
에서는 문제 없었기 때문에,
모델이나 컨트롤러가 아닌지 찾았습니다.
결과
모델이었습니다.
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships ←ここ!!
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships, foreign_key: :following_id
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
has_many :relationships
foreign_key: :following_id
를 작성할 수 없습니다.
외래 키 (foreign key)
【SQL 입문】외부 키란? 기본 키와의 관계 및 작성 방법에 대해 설명
외래 키 (FOREIGN KEY)는
관련 테이블간을 연결하기 위해 설정하는 열로 데이터의 무결성을 데이터베이스에 보증시키기 위해서 이용합니다.
설정을 잊었기 때문에 following이 공중에 떠 있던 느낌 이군요.
끝에
원래 앱에서 Docker를 다루고 싶었기 때문에,
Docker 학습을 시작했습니다.
조금 어렵고 머리가 혼란 스럽지만,仮想
라는 말을 좋아하고 흥미는 끓고 있습니다.
YouTube에서 이 사람과 같은 일을 했습니다.
좋으면 봐주세요.
Docker 초입문 강좌 합병판 | 처음부터 실천하는 4시간의 풀코스
이번 참고 기사입니다.
Mysql2::Error: Unknown column 'favorites.true' in 'where clause' 해결 방법
내일은 일요일이지만,
계속해서 Docker의 학습도 노력합니다!
어딘가의 타이밍에 Docker의 기사도 쓰고 싶다!
Reference
이 문제에 관하여([Rails] Mysql2::Error:Unknown column(팔로우 기능)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkato1013/items/fe6aed5ea4e38cf109ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails.application.routes.draw do
devise_for :users
root to: 'foods#index'
resources :foods do
collection do
get :search
end
resource :likes, only: [:create, :destroy]
end
resources :users do
resources :relationships, only: [:create, :destroy]
get :followings, on: :member
get :followers, on: :member
end
end
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
該当箇所のみ
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
잘 모르기 때문에, 우선, 분노하고 있는 곳을 통째로 지워 보았습니다.
コメントアウトしてみた
<div class="mypage-follow-info">
<h2 class="mypage-follow">フォロー</h2>
<%#= link_to @user.followings.count, followings_user_path(@user) %>
<h2 class="mypage-follow">フォロワー</h2>
<%= link_to @user.followers.count, followers_user_path(@user) %>
</div>
그러자 브라우저가 코멘트 아웃했을 때 뽑아 무사히 표시되었습니다.
<%= link_to @user.followers.count, followers_user_path(@user) %>
여기가 표시되었으므로,
원인은
<%= link_to @user.followings.count, followings_user_path(@user) %>
이라는 것이 판명.
형태는
followers
에서는 문제 없었기 때문에,모델이나 컨트롤러가 아닌지 찾았습니다.
결과
모델이었습니다.
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships ←ここ!!
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
user.rbclass User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships, foreign_key: :following_id
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
has_many :relationships
foreign_key: :following_id
를 작성할 수 없습니다.
외래 키 (foreign key)
【SQL 입문】외부 키란? 기본 키와의 관계 및 작성 방법에 대해 설명
외래 키 (FOREIGN KEY)는
관련 테이블간을 연결하기 위해 설정하는 열로 데이터의 무결성을 데이터베이스에 보증시키기 위해서 이용합니다.
설정을 잊었기 때문에 following이 공중에 떠 있던 느낌 이군요.
끝에
원래 앱에서 Docker를 다루고 싶었기 때문에,
Docker 학습을 시작했습니다.
조금 어렵고 머리가 혼란 스럽지만,仮想
라는 말을 좋아하고 흥미는 끓고 있습니다.
YouTube에서 이 사람과 같은 일을 했습니다.
좋으면 봐주세요.
Docker 초입문 강좌 합병판 | 처음부터 실천하는 4시간의 풀코스
이번 참고 기사입니다.
Mysql2::Error: Unknown column 'favorites.true' in 'where clause' 해결 방법
내일은 일요일이지만,
계속해서 Docker의 학습도 노력합니다!
어딘가의 타이밍에 Docker의 기사도 쓰고 싶다!
Reference
이 문제에 관하여([Rails] Mysql2::Error:Unknown column(팔로우 기능)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mkato1013/items/fe6aed5ea4e38cf109ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships ←ここ!!
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :foods, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_foods, through: :likes, source: :food
has_many :relationships, foreign_key: :following_id
has_many :followings, through: :relationships, source: :follower
has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: :follower_id
has_many :followers, through: :reverse_of_relationships, source: :following
has_one_attached :image
def already_liked?(food)
self.likes.exists?(food_id: food)
end
def is_followed_by?(user)
reverse_of_relationships.find_by(following_id: user.id).present?
end
end
has_many :relationships
원래 앱에서 Docker를 다루고 싶었기 때문에,
Docker 학습을 시작했습니다.
조금 어렵고 머리가 혼란 스럽지만,
仮想
라는 말을 좋아하고 흥미는 끓고 있습니다.YouTube에서 이 사람과 같은 일을 했습니다.
좋으면 봐주세요.
Docker 초입문 강좌 합병판 | 처음부터 실천하는 4시간의 풀코스
이번 참고 기사입니다.
Mysql2::Error: Unknown column 'favorites.true' in 'where clause' 해결 방법
내일은 일요일이지만,
계속해서 Docker의 학습도 노력합니다!
어딘가의 타이밍에 Docker의 기사도 쓰고 싶다!
Reference
이 문제에 관하여([Rails] Mysql2::Error:Unknown column(팔로우 기능)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mkato1013/items/fe6aed5ea4e38cf109ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)