Rails NoMethodError:未定义的方法`compact'错误

时间:2015-01-06 03:05:47

标签: ruby-on-rails associations mongoid

我是铁杆新手,无法弄清楚以下关系有什么问题。 我有一些模型如下     课题       包括Mongoid :: Document       has_one:dep_q,class_name:' DepQ'       belongs_to:rep,class_name:" Rep"     端

class DepQ
  include Mongoid::Document
  has_one :data_holder, class_name: 'DataHolder'
  belongs_to :question, class_name: 'Question'
end

class DataHolder
  include Mongoid::Document
  has_one :rep, class_name:"Rep"
  belongs_to :dep_q, class_name:"DepQ"
end

class Rep
  include Mongoid::Document
  has_many :question, class_name: 'Question'
  belongs_to :data_holder, class_name: 'DataHolder'
end

我不知道我在这里做错了什么。我不知道为什么会收到此错误。我可以做以下

a = Question.new
a.dep_q = DepQ.new
a.dep_q.data_holder = DataHolder.new
a.dep_q.data_holder.rep = Rep.new

但是,一旦我在Rep下创建了一个新问题,我就会收到以下错误

NoMethodError: undefined method `compact' for #<Question:0x00000005168cf8>

为什么我会看到此错误以及如何解决此问题?

1 个答案:

答案 0 :(得分:0)

因为Rep has_many questionsRep.questions是一个数组。

您应该执行以下操作:

r = Rep.new
q = Question.new
r.questions << q