Ruby on rails 获取与Rails相似的模型
我的Ruby on rails 获取与Rails相似的模型,ruby-on-rails,Ruby On Rails,我的业务类中有以下方法: 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_bu
业务
类中有以下方法:
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
注意,业务
不再存在
但是,我得到一个错误,未定义where方法…
我刚刚开始使用rails,我还想知道这两种方法之间是否有任何区别?为什么我会犯这个错误 您需要将该方法定义为
def self.similous\u business
,以使其成为类方法。似乎您希望将similous\u business
用作类方法,而不是实例方法。两者的区别在于,您为类(如Business)使用class方法,而为类(如@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
好吧,我明白。一个会比另一个更有效吗?在上面的例子中,效率没有区别,因为你基本上是用同样的方式做同样的事情。我改变了,现在我得到了#
未定义的方法“相似的业务”。如何从实例中调用class方法?你不能(你可以从实例中获取类并调用它,但你不需要这样做)。你可以这样称呼它:业务。类似的业务
。