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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    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
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 여러가지 방법으로 해보았는데 안되어서 레일즈버전을 4.2.5버전으로 내리고 작업을 하니 정상작동합니다... 동일코드인데 버전에 따라 달라지는지는 모르겠지만 해결하였습니다! 우연 2017.7.24 04:28

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)