2011-09-19 3 views
3

내 사용자 테이블에 lastlogin이라는 datetime 열이 있습니다. 사용자가 로그인했을 때이 데이터를 어떻게 설정 (업데이트) 할 수 있습니까? 내 세션 컨트롤러에 이런 일을 triyng 해요 :레일 : 마지막 로그인 날짜 시간을 설정하는 방법

def create 
    user = User.find_by_email(params[:email]) 
    if user && user.authenticate(params[:password]) 
    session[:user_id] = user.id 
    user.lastlogin = Time.now 
    redirect_to root_url 
    else 
    render "new" 
    end 
end 

user.lastlogin = Time.now없는 작품 :(

+0

나는 내 질문에 대한 답변을 가지고, 나는 user.save 잊어 버려. 아마도 누군가에게 유용 할 것입니다. –

답변

4
user.update_attribute(:lastlogin, Time.now) 
+0

고마워, 너무 좋아! :) –

+0

위대한 :) 당신이 단지 하나의 속성을 업데이 트하려는 경우이 방법을 권 해드립니다. 그것은 동일하게 작동하지만 더 좋아 보인다;) –

+2

'user.touch (: lastlogin)'이 더 좋아 보인다 ... * 및 * updated_at' 업데이트. –

0

당신이 사용자를 저장해야하기 때문에 그것은 작동하지 않습니다 위해 것은 그것을 지속성을 확인합니다. 그냥 user.lastlogin = Time.now 전에 user.save를 추가합니다. 아마도

+1

제 생각에,'user.lastlogin = Time.now'는'user.save' 전에 있어야합니다. Time.now를 설정 했으므로 새로운 데이터를 저장합니다. 내가 맞습니까? –

2

user.touch :lastlogin (touch)

+0

이것은 이론적으로 질문에 답할 수 있지만, (http : // meta.stackexchange.com/q/8259) 여기에 답변의 핵심 부분을 포함하고 참조 용 링크를 제공하십시오. –

1
user.update_attribute(:lastlogin, Time.now) 

잘 작동합니다. 날짜가 사용자 또는 사용자가 사용할 경우

따라, 나는 하나의 모범 사례가 Time.zone.now 대신 Time.now을 사용하는 것입니다 레일 것을 추가 할 것입니다 (하나 config.time_zone에 의해 지정된 시간대의 날짜 을 제공합니다 application.rb에서, 다른 하나는 사용자에게 현지 시간을 제공합니다.

출처 : http://rails-bestpractices.com/posts/2014/10/22/use-time-zone-now-instead-of-time-now/

0

나는 다음을 수행하고있어, 이것을 함께 퍼팅.

  1. 사용자는 last_seen_on 필드 (차라리 날짜 시간보다 일을 사용하고 있습니다)이

내 업데이트 방법은 같다 로그인을 할 때

  • 이 전화 last_seen_on 업데이트하는 방법을 만들기 다음

    def update_last_seen_on 
        if self.last_seen_on != Date.today 
         self.update_column(:last_seen_on,Date.today) 
        end 
        end 
    

    이 보장

    • 데이터베이스 만 더 콜백이
    • 당신이 고안를 사용하는 경우

  • 을 변경되지 않습니다에서 업데이트 된 사용자 모델에 트리거되지 않습니다 변화
  • 이있는 경우라고하며, 다음 호출 할 수 있습니다 이 쉽게 귀하의 장치 초기화 프로그램에 다음을 추가하여

    #config/initializers/devise.rb 
    Warden::Manager.after_set_user do |user,auth,opts| 
        user.update_last_seen_on 
    end 
    
  • 관련 문제