Ruby on rails HABTM与数组的关系
我是Rails 3编程的初学者,在创建正确的模型方面有一个问题 假设有一个应用程序可以管理一本书的书目,即管理引用文章列表中每个章节的映射。所以对于文章的部分 我可以吃点像:Ruby on rails HABTM与数组的关系,ruby-on-rails,arrays,relationships,Ruby On Rails,Arrays,Relationships,我是Rails 3编程的初学者,在创建正确的模型方面有一个问题 假设有一个应用程序可以管理一本书的书目,即管理引用文章列表中每个章节的映射。所以对于文章的部分 我可以吃点像: create_table :articles do |t| t.string :title t.text :content ... has_many :articles_bibliographies has_many :articles, :through => :articles_bibliogr
create_table :articles do |t|
t.string :title
t.text :content
...
has_many :articles_bibliographies
has_many :articles, :through => :articles_bibliographies
在参考书目方面,我希望有一个这样的模型
create_table :bibliographies do |t|
t.string :chapter
t.text :ref
...
其中ref
实际上是对文章的引用数组,因此可以通过serialize
ActiveRecord方法对其进行管理
好的,现在的问题是如何使数组@书目.ref
中的元素成为对多个文章id
的引用(在Ruby意义上)
我如何建立这种关系的模型,我应该编写什么Rails3代码来表达这种关系?
让我困惑的是,@书目的单个实例的单个字段会引用多个@article.id
提前感谢如果您真的想存储这样的关系,那么我将在书目模型中定义一个方法,类似这样 (假设ref是一个id数组)
不过,我会以不同的方式来储存这种关系。添加第三个表/模型文章参考书目,其中包含文章id和参考书目id字段。然后,您可以使用内置于ActiveRecord中的has_many:through关联 在你的参考书目课上,你会有如下内容:
create_table :articles do |t|
t.string :title
t.text :content
...
has_many :articles_bibliographies
has_many :articles, :through => :articles_bibliographies
然后你就可以做@refology.articles了
在这里阅读更多内容根据egze的建议,我找到了一种解决问题的方法(不使用数组!)。 因此,我创建了一个has_multi-through关系,但因为我想为 文章如何在参考书目中提及,表格文章 还有一个order_nr字段,我在其中存储提到的第一篇、第二篇等文章 参考书目中:
create_table :articles_bibliographies do |t|
t.references :article
t.references :bibliography
t.integer :order_nr
通过这种方式,我可以检索并显示元素的有序列表,包括:
@bibliography.articles.order("order_nr ASC")
序列化与文章相关的外键有什么意义?你为什么不使用普通的habtm方式呢?我真的不明白,抱歉,谢谢,我没有排除通过关系使用has many的可能性,因为我可以保留我的数组:),所以我将研究如何实现它。