使用以下命令创建Rails ActiveRecord时出错:通过

时间:2011-10-07 10:27:25

标签: ruby-on-rails activerecord

在课堂上

class Idea < ActiveRecord::Base

similar_idea_ids&amp;的属性similar_ideas断言如下:

has_many :similar_idea_ids, :class_name => "SimilarIdea", :foreign_key => "idea_id"
has_many :similar_ideas, :through => :similar_idea_ids, :class_name => "Idea"

然后,使用此代码插入时:

self.similar_ideas << idea unless self.id == idea.id

我有错误:

NoMethodError: undefined method `create!' for []:Array

有人可以解决这个问题吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,由于这些是两个或更多模型之间的关联,因此从两个或所有方向查看关联会很有帮助。这是一个多对多的协会吗?一对多?

其次,我不相信你已经在模型中正确地宣布了你的关联(正如砖块在他的评论中提到的那样)。您似乎试图在属性上而不是在另一个模型上建立关联。这不是该机制的意图。它基本上是一种简化声明和使用具有某种关系的模型的方法。由于具有连接表,因此具有连接表的多对多是其中之一,这些关联特别简化。

我建议您阅读这篇精彩的guide on ActiveRecord associations