如何声明我将在所有操作中使用的实例变量?

时间:2015-01-27 02:21:43

标签: ruby-on-rails ruby-on-rails-4

我有这个声明,我想在我NewsroomController的所有行动中使用这个声明,我该怎么做才干,而不是在每个动作中声明它?

@num_posts_today = Post.published.posted_today.count

2 个答案:

答案 0 :(得分:2)

使用before_action块。但是,请阅读this,了解为什么它可能不是很棒。

答案 1 :(得分:1)

我会把逻辑放在模型中。类似的东西:

def posts_published_today_count
  self.published.posted_today.count
end

或者写一个类方法。

def self.published_today
  self.published.posted_today
end

在您的控制器中:

Post.published_today.count

或者在观点中:

@posts.published_today.count

你明白了......我没有测试我写的内容,随时可以进行修改。

我更喜欢在没有.count的情况下在我的模型上编写它,你可以将它用作未来需要使用的范围。