2011-11-02 41 views
0

我是Ruby on Rails的初学者。我有一个关于组织对象和类的问题。在Ruby中组织类和对象?

我有了几个字段,如作者,关键词,日期等的文章类

的问题是,我要组织这些文章的对象,以便能够共同对它们进行分析。这些文章来自不同的来源,我希望能够根据来源访问它们。

我猜我可以为ArticleSource创建一个新类,并通过has_one或embeds_one之类的关系将其与Article类关联。我做对了吗,还是有更好的办法?

在此先感谢!

+0

你是什么“来源”的定义? “纽约时报”会成为一个文章来源吗? –

回答

0

我觉得has_manybelongs_to会做你想要什么。

添加article_source_id列到第表后,你的类会是这个样子:

class ArticleSource 
    has_many :articles 
end 

class Article 
    belongs_to :article_source 
end 

然后你就可以共同使用这样的代码分析文章:

source = ArticleSource.find_by_name("New York Times"); 
articles = source.articles 
+0

后续问题:如何创建数据源?我需要在控制器中设置字段吗?像article.article_source.create()? – maru

+0

不,这会给出错误,因为article_source将为零。你可以这样做: 'source = ArticleSource.create! :name =>“纽约时报”; article.article_source = source'或'article.article_source_id = source.id'。 –

+0

对不起,我是新手,但你有这样的示例代码?或者你能指点我一个教程?谢谢。 – maru

0

我想你应该看看这里的单表继承。

保持文章的超类,它继承到子类作为ExtertArticle(源专家)和StudentArticle等等

参考:http://api.rubyonrails.org/classes/ActiveRecord/Base.html

+0

我认为这比需要更复杂。你为什么认为“来源”应该是文章的这样一个特殊属性,应该像这样对待?如果开发者拥有“格式”等其他属性(例如网络,杂志,博客文章);是什么让“源”比“格式”更重要? –