2012-11-12 92 views
0
class Post < ActiveRecord::Base 
belongs_to :users 

def self.find_latest_closed 
    Post.where("status=?",'Closed').order("updated_at DESC").limit(2) 
end 

def self.find_latest_open 
    Post.where("status=?",'Open').order("updated_at DESC").limit(2) 
end 
end 

在PostController中Ruby類方法不工作

class UsersController < ApplicationController 
def dashboard 
    @totalclose = Post.find_latest_closed 
    @totalopen = Post.find_latest_open 
end 
end 

我收到以下錯誤

NoMethodError in UsersController#dashboard 
undefined method `find_latest_closed' for #<Class:0x000001074eb760> 

請告訴我錯在這裏?

+2

它在控制檯中工作嗎? models/post.rb中的類定義是什麼?此外,請檢查您的拼寫 - 這些錯誤通常是由於拼寫錯誤造成的... – PinnyM

+2

您應該使用範圍而不是類方法(例如:scope:two_latest_open,其中status爲'Open').order('updated_at DESC')。限制(2)' – MrYoshiji

+1

無論這裏發生了什麼,你可能會更好地使用'''scope''來代替自己定義的方法'''scope:latest_closed,where('status =?','關閉')。order('updated_at DESC')。limit(2)''' –

回答

0

這可能與ActiveRecord的神奇find_*方法有某種衝突。也許嘗試將方法名稱更改爲get_*

0

我會嘗試刪除方法調用的Post前綴。

def self.find_latest_closed 
    where("status=?",'Closed').order("updated_at DESC").limit(2) 
end 

def self.find_latest_open 
    where("status=?",'Open').order("updated_at DESC").limit(2) 
end