1

我的Business课堂上有以下方法:

def similar_businesses(n)
    Business.where(:category_id => category_id, :city_id => city_id).where("id NOT IN (?)",id).limit(n).order("RANDOM()")
end

它基本上抓住n了同一类别和同一城市的企业。

我正在查看一个关于使用类方法而不是范围的 railscast,并尝试将我的代码转换为:

def similar_businesses(n)
    where(:category_id => category_id, :city_id => city_id).where("id NOT IN (?)",id).limit(n).order("RANDOM()")
end

通知Business不再存在。

但是,我收到一个错误undefined where method for ...

我刚刚开始使用rails,我也想知道这两种方法有什么区别吗?为什么我会收到这个错误?

4

2 回答 2

1

您需要将方法定义为def self.similar_businesses使其成为类方法。

于 2012-11-11T23:52:29.380 回答
1

似乎您想similar_businesses用作方法而不是实例方法。两者之间的区别在于,您为类(例如 Business)使用类方法,而您为之类的东西应用实例方法@business = Business.new

尝试使用

def self.similar_businesses(n)
  where(:category_id => category_id, :city_id => city_id).where("id NOT IN (?)",id).limit(n).order("RANDOM()")
end
于 2012-11-11T23:54:03.797 回答