rails 5.1에서 devise gem 사용 시 user_id가 저장되지 않는 문제
조회수 1963회
로컬에서 rails 5.1버전을 사용해 개발 중입니다.
같은 코드로 4.2.5버전에서 정상적으로 작동하는 데, 5.1버전에서는 post 작성 시 user_id가 저장되지 않습니다.
로그인을 해야 글을 작성할 수 있도록 before_action을 적용해서 테스트했습니다
콘솔로 user에 id가 정상적으로 저장되어 있는 것을 확인했습니다.
먼저 post.rb 입니다.
class Post < ApplicationRecord
belongs_to :user, optional: true
has_many :replies
end
user.rb 입니다.
class User < ApplicationRecord
has_many :posts
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
post를 작성하는 컨트롤러 입니다.
def write
@new_post = Post.new
@new_post.title = params[:title]
@new_post.content = params[:content]
@new_post.user = current_user
@new_post.save
end
작성 된 post를 콘솔로 검색해본 결과 입니다.
irb(main):002:0> Post.last
Post Load (1.3ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" DESC LIMIT ? [["LIMIT", 1]]
=> #<Post id: 4, title: "제목을 입력하세요.", content: "내용을 입력하세요.", user_id: nil, userip: "127.0.0.1", created_at: "2017-06-29 06:12:07", updated_at: "2017-06-29 06:12:07"
user에 생성된 정보입니다.
irb(main):003:0> User.last
User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT ? [["LIMIT", 1]]
=> #<User id: 2, email: "123@abc.com", created_at: "2017-06-29 08:54:22", updated_at: "2017-06-29 08:54:22"
1 답변
-
user_id가 저장이 안되었네요. 아래 둘 중 하나로 테스트 해보시면 될거같해요.
def write @new_post = Post.new @new_post.title = params[:title] @new_post.content = params[:content] @new_post.user_id = current_user.id @new_post.save end
혹은
def write @new_post = current_user.posts.new @new_post.title = params[:title] @new_post.content = params[:content] @new_post.save end
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력