Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails HABTM与数组的关系_Ruby On Rails_Arrays_Relationships - Fatal编程技术网

Ruby on rails HABTM与数组的关系

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

我是Rails 3编程的初学者,在创建正确的模型方面有一个问题

假设有一个应用程序可以管理一本书的书目,即管理引用文章列表中每个章节的映射。所以对于文章的部分 我可以吃点像:

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的可能性,因为我可以保留我的数组:),所以我将研究如何实现它。