2016-12-08 1 views
0

처음으로 새 페이지 # (.../posts/new)를 사용자가 방문하면 타임 스탬프를 저장하고 싶습니다. 이 타임 스탬프를 데이터베이스의 게시물 테이블에 저장하십시오.레일 : 사용자가 "새"페이지를 방문하여 데이터베이스에 저장하는 경우 타임 스탬프 받기

내가 게시물 테이블에서 지금까지

  1. 했던 것은, 내가 추가 나는했습니다 내 posts_controller.rb에서 데이터 유형 타임 스탬프
  2. 이있는 열 이름 first_time_visit 마이그레이션했습니다 first_time_visit 특성을 @post로 초기화하고 Time.now로 설정합니다.
  3. "first_time_visit"특성을 이미 허용했습니다.

문제 :

  • 새 게시물을 작성하고 저장 한 후 first_time_visit 열은 여전히 ​​"무기 호"입니다.

    내 post.rb 모델에서 :

    def add_first_time_visit(time) 
        self.first_time_visit = time 
    end 
    

    내 posts_controller에서 내 posts_controller.rb

    def new 
        @post = Post.new(first_time_visit: Time.now) 
    end 
    
    def create 
        @post = current_user.posts.build(post_params) 
    
        if @post.save 
        redirect_to posts_path, notice: "Post saved." 
        else 
        render 'new', notice: "Post could not be saved." 
        end 
    end 
    
    ... 
    
    private 
    def post_params 
        params.require(:post).permit(:description, :link, :first_time_visit) 
    end 
    

    에서

는 또한 다른 해결책을 시도했습니다. rb :

def new 
    @post = Post.new 
    @post.add_first_time_visit(Time.now) 
end 

그러나이 솔루션은 또한 나에게 "무관"만을 제공합니다.

답변

1

양식에 first_time_visit을 숨김 필드로 추가하십시오.

레일스 규칙에 따라 날짜 시간 필드의 이름을 at으로 끝내야합니다. first_time_visit =>first_time_visited_at

+0

아휴, 너무 바보 같아요. 물론 숨겨진 필드가 작동했습니다. 감사합니다. <% = hidden_field : first_time_visit, value = Time.current %>을 양식에 추가했습니다. 그러나 두 번째 제안은 내가 원하는 방식으로 작동하지 않을 것 같아요? 사용자가/posts/new page를 방문하는 시간이 아니라 게시가 생성되는 시간을 추가하기 때문에? – OhDaeSu

+0

두 번째 제안은 귀하의 경우에는 효과가 없을 것입니다. 답변에서 제거하십시오. –

+0

'first_time_visit'을 세션에 저장하고'create' 액션에서 추출 할 수 있습니다. –