2013-05-01 2 views
2

Google의 앱에는 사이트의받은 편지함을 통해 볼 수있는 "알림"이 있으며 이메일에 대한 정보도 있습니다. 알림을 받으면 해당 메시지에 회신 할 수있는 링크가 포함되어 있습니다. 즉, 원래 메시지의 보낸 사람에게 PM을 보내거나 게시물에 주석을 남길 수도 있습니다.컨트롤러와 우편 발송자가 사용하는 유틸리티 코드를 어디에 둘 것인지?

if @notification.post 
    # comment on the post in question 
    @reply_link = new_comment_path(:post_id => @notification.post.id) 
else 
    # by default, reply link sends a PM in return 
    @reply_link = new_notification_path(
    :recipient_id => @notification.sender.id, 
    :subject => @notification.subject =~ /^Re:/? 
     @notification.subject : 
     "Re: " + @notification.subject 
) 
end 

나는 BTW 우리의 컨트롤러 코드에서 것을했다 :

사용하는 링크를 답장을 알아낼 수있는 코드 app/controllers/notifications_controller.rb

지금 우리가 같은 응답 링크를 포함 할 우리의 이메일 알림, 즉 우리는 같은 종류의 회신 링크 생성을해야합니다. app/mailers/notifier.rb

나는 자신을 반복하고 싶지 않기 때문에, reply_link 방법을 만들어서 어딘가에 두 곳에 넣을 것입니다. 컨트롤러와 메일러가 액세스 할 수 있습니다.

제 생각에는 모델에 넣어서 Notification.reply_link을 가질 수있었습니다. 멋지 겠지만 new_comment_pathnew_notification_path이 필요하므로 모델에서 사용할 수 없습니다.

나의 두 번째 생각은 도우미를 사용하는 것이지만, 모든 사람들은 도우미가 빨아 먹는다고 생각하는 것 같고, b) 어쨌든 작동시킬 수 없다.

그래서 컨트롤러와 메일러에 모두 액세스 할 수 있도록이 편리한 방법을 어디에 두어야합니까? 좋은 코딩 방법을 따르고 있습니까?

답변

2

모듈에 압축을 푼 다음 '섞어서 사용'하면 필요한 두 위치에서 액세스 할 수 있습니다.

원하는 위치에 모듈을 둘 수 있습니다. lib 폴더는 역사적으로 인기있는 장소 였거나 앱 디렉토리에 'modules'폴더를 만듭니다.

1

나는 일반적으로 도우미

에 컨트롤러에서 액세스 방법을 넣어하는 경향이 /app/helpers 또는 /lib

에 넣어

관련 문제