我在rails 3模型中有一个方法,用nokogiri解析XML。 如何在控制台中调用此方法以测试它。
这是整个班级(我试图调用generate_list):
class Podcast < ActiveRecord::Base
validates_uniqueness_of :name
serialize :hosts
def generate_list
# fetch the top 300 podcasts from itunes
itunes_top_300 = Nokogiri.HTML(open("http://itunes.apple.com/us/rss/toppodcasts/limit=300/explicit=true/xml"))
# parse the returned xml
itunes_top_300.xpath('//feed/entry').map do |entry|
new_name = entry.xpath("./name").text
podcast = Podcast.find(:all, :conditions => {:name => new_name})
if podcast.nil?
podcast = Podcast.new(
:name => entry.xpath("./name").text,
:itunesurl => entry.xpath("./link/@href").text,
:category => entry.xpath("./category/@term").text,
:hosts => entry.xpath("./artist").text,
:description => entry.xpath("./summary").text,
:artwork => entry.xpath("./image[@height='170']").text
)
podcast.save
else
podcast.destroy
end
end
end
end
编辑:哇,1000次观看。我希望这个问题对人们起到了帮助作用。当我回顾这一点时,令我惊讶的是,仅仅一年多以前,我无法弄清楚实例方法和类方法之间的区别。现在我在ruby,Rails和许多其他语言/框架中编写复杂的面向服务的应用程序和后端。 Stack Overflow就是这个原因。非常感谢这个社区赋予人们解决问题和理解他们的解决方案的能力。
答案 0 :(得分:21)
看起来你想将它用作类方法,所以你必须像这样定义它:
def self.generate_list
...
end
然后您可以将其称为Podcast.generate_list
。
答案 1 :(得分:13)
从您的代码看,您的generate_list
方法实际上构建了Podcast并保存了它?
启动rails控制台:
$ rails console
创建一个新的Podcast,在其上调用方法:
> pod = Podcast.new
> pod.generate_list
答案 2 :(得分:3)
或者,如果您不想重写代码,请遵循此。
在终端上键入rails c
以打开控制台,然后执行:
p = Podcast.new
p.generate_list
答案 3 :(得分:1)
这是一个实例方法,请尝试:
Podcast.first.generate_list
你应该通过如下声明来创建一个类方法:
def self.generate_list
并称之为:
Podcast.generate_list