2013-12-21 4 views
0

를 찾기 위해 나는이 다음 레일 내가 find post 두 번 쓴 위의 코드에서 활성 모델레일은 레일 업데이트를 작성하고 기록

def update_status 
    post = Post.find params[:id] 
    post_status = post.update_attributes(status: status, user_id: user) 
    if post_status 
     post = Post.find params[:id] 
     status = post.status 
     user = Post.user_id 
    end 
end 

그것을 할 수있는 더 좋은 방법이 있나요. 어떤 제안?

편집-1 :

내 업데이트 코드

post_status = post.update_attributes(status: status, user_id: user, approved_at: DateTime.now.to_time) 

post_controller.rb에 내 링크보기에서 상태를 업데이트 당신은 4 방식처럼 레일에 쓸 수

<%= link_to edit_post_path(post, {status: 1}), class: 'btn btn-default btn-sm post-status', method: :get, remote: true do %>change status<% end %> 

답변

1

입니다 find()가 레일 4에서 더 이상 사용되지 않고 find()가 find보다 더 선호되는 곳에서 나는 두 번 게시물을 찾는 이유를 찾지 못했습니다. 지역 변수 statususer을 사용하지 마십시오. 대신

def update_status 
    post = Post.where("id =?", params[:id]).first 
    post.user_id = user 
    post.status = status 
    post.save 
end 
+0

당신은 자세한 내용은 내 편집을 확인하실 수 있습니다, 뷰에서 사용할 인스턴스 변수를 사용하려면 – kndwsu

+0

당신은 당신이 정확하게 뭘 원하는지 말해 줄 수? – RSB

+0

위 코드에서 user_id는 세션 값입니다. post_params는 업데이트 할 코드 값이 – kndwsu