Ruby on rails 3 Ruby类方法不工作 class Post
在后置控制器中Ruby on rails 3 Ruby类方法不工作 class Post,ruby-on-rails-3,Ruby On Rails 3,在后置控制器中 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"
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
class UsersController
我得到以下错误
class UsersController < ApplicationController
def dashboard
@totalclose = Post.find_latest_closed
@totalopen = Post.find_latest_open
end
end
用户控制面板中的NoMethodError
未定义的方法“查找\u最新\u关闭”#
这里怎么了?我会尝试删除方法调用的Post前缀
NoMethodError in UsersController#dashboard
undefined method `find_latest_closed' for #<Class:0x000001074eb760>
您可能与ActiveRecord的magic
find.*
方法存在某种冲突。也许可以尝试将方法名称更改为get.*
它在控制台中工作吗?类定义是否在models/post.rb中?此外,请检查拼写-这些错误通常是由于打字错误造成的…您应该使用范围而不是类方法(例如:scope:two_latest_open,其中(状态:“open”)。顺序(“updated_at DESC”)。限制(2)
无论这里发生了什么,使用scope
而不是定义自己的方法可能会更好。scope:latest_closed,其中('status=?','closed')。order('updated_at DESC')。limit(2)
您可能与ActiveRecord的magicfind.*
方法存在某种冲突。也许可以尝试将方法名称更改为get.*
@Historcrat是的,您是正确的。它成功了..谢谢
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