定义获取所有记录的模型方法

时间:2014-08-05 19:17:27

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

我有一个名为" Post"的轨道模型,它代表用户在网站上的帖子。

每个"发布"有一个名为"得分"它会计算视图并计算得分。分数不存储在数据库中,它只是一种方法:

class Post < ActiveRecord::Base
  has_many :votes

  def score
    self.votes * 2
  end

  # This should return an object with all the posts, ordered by score. 
  def get_all_posts_sorted_by_rank
    ...
  end

Rails控制台出错:

2.0.0-p451 :001 > Post.get_all_posts_sorted_by_rank

NoMethodError: undefined method `get_all_posts_sorted_by_rank' for Post (call 'Post.connection' to establish a connection):Class

1 个答案:

答案 0 :(得分:2)

如果您希望它是一个类方法,您应该使用:

    def self.get_all_posts_sorted_by_rank
        ...
    end

这可能就是你想要的。

否则,如果你想要一个实例方法,你应该按照自己的方式使用,但是你必须先实例化你的对象:

@post = Post.new #or find(params[:id]) or some other way
@post.get_all_posts_sorted_by_rank #use it

但第一种情况似乎更有可能。