2015-01-27 4 views

답변

1

나는 로직을 모델에 넣을 것이다. 다음과 같이 입력하십시오 :

def posts_published_today_count 
    self.published.posted_today.count 
end 

또는 클래스 메소드를 작성하십시오.

Post.published_today.count 

또는 뷰 :

@posts.published_today.count 

당신은 내가 수정을 자유롭게 내가 쓴 무엇을 테스트하지 않았다 ... 생각을 컨트롤러에서

def self.published_today 
    self.published.posted_today 
end 

.

내 모델에 .count없이 쓰고 나중에 사용할 필요가있는 범위로 사용할 수 있습니다.

+0

이것은 확실히 좋은 방법입니다. 그러나 OP가 필요하다고 생각하기 때문에 뷰에서 변수를 사용할 수 없게됩니다. 또한 기본적으로 캐시되지 않을 것이라고 생각하므로 두 번 사용하면 두 번 데이터베이스에 요청할 것입니다. – Amadan

+0

보기에서 액세스하고, 클래스 메서드를 작성하고, 편집을 참조하십시오. – neo

+0

물론 가능합니다. – Amadan

2

before_action 블록을 사용하십시오. 그러나, 그것이 최고가 아닐 수도 왜 this 읽어보십시오.

+0

더 많은 레일 4 가지 방법이 있습니까? – marcamillion

+0

본질적으로 좋지는 않으며 본질적으로 나쁘지 않습니다. 당신이 정말로 모든 행동에서 그것을해야한다면, 나는 그것을 위해 가라고 말할 것입니다. 예외가 발생하기 시작하면, @ neo의 메소드를 채택하고 그것을 필요로하는 액션의 맨 위에'@num_posts_today = posts_published_today_count'와 같은 것을 사용하는 비 DRY 방식을 선호합니다. 이 기사는 장단점에 대해 설명합니다. 그것들의 무게를다는 것은 당신에게 달려 있습니다. – Amadan

관련 문제