Ruby on rails Mongo+;RoR模型。被命名错误卡住了

Ruby on rails Mongo+;RoR模型。被命名错误卡住了,ruby-on-rails,ruby,mongodb,model,nomethoderror,Ruby On Rails,Ruby,Mongodb,Model,Nomethoderror,我的一个模型中的NoMethodError有问题 在日志文件中,我们有: NoMethodError (undefined method `length=' for #<Book:0x000000083866b8>): 2013-03-28T10:25:19+00:00 app[web.1]: app/models/engine/book.rb:13:in `block in find_or_create_by_guide' 2013-03-28T10:25:19+00:0

我的一个模型中的NoMethodError有问题

在日志文件中,我们有:

   NoMethodError (undefined method `length=' for #<Book:0x000000083866b8>):
2013-03-28T10:25:19+00:00 app[web.1]:   app/models/engine/book.rb:13:in `block in find_or_create_by_guide'
2013-03-28T10:25:19+00:00 app[web.1]:   app/models/engine/book.rb:9:in `find_or_create_by_guide'
然后,在指南文档中调用图书模型:

module ClassMethods
  def find_or_create_by_guide(guide)
    book = ::Book.find_or_create_by_document(guide.id.to_s) do |b|
      b.city_id = guide.city
      b.host    = guide.host
      b.pace    = guide.pace || :normal
      b.length  = guide.length
    end
在book.rb的后面,我有以下几行:

groups = sorted_points.in_groups_of(self.length.count, false)
Length.rb

  class Length < ActiveRecord::Base
  belongs_to :book

  attr_accessible :book_id
end
attr_accessible :user_id, :country_id, :city_id, :hotel_id, :type, :price, :host, :pace, :created_at, :updated_at, :length
最后,长度的迁移:

class AddLengthColumnToBooks < ActiveRecord::Migration
  def change
    add_column :books, :length, :integer
  end
end
class AddLengthColumntBooks

感谢您的任何提示。

这真是一团糟。一旦你们想让“长度”成为书的一个属性,一旦你们想让“长度”成为一个与书相关的独立模型。 我看不出有长度模型的意义。
将“长度”作为书籍属性。

我在开发方面非常基础,所以我尝试从不同的角度来处理这个问题。根据您所写的内容,我将:1)删除长度模型。2) 将attr_accessor:length添加到Book.rb3)中,然后删除b.length=guide.length,只需使用self调用length即可。当我需要它时(如in groups=sorted_points.in_groups_of(self.length.count,false))1)是;2) 不,您在迁移中添加了'legth'列,因此不需要attr_访问器;3) b.length=guide.length似乎没问题,您不能只调用self.length,因为类方法内部的“self”不是一个Book instanceOk,所以如果我离开b.length=guide.length,那么“groups=sorted\u points.in\u groups\u of(self.length.count,false)”是划分排序点的正确方法吗?最后一个问题:如果长度本身是整数,self.length是否真的需要“count”?#in_groups_of只是一个接受整数参数的数组方法,所以它应该可以工作,但当然你需要去掉“count”,只需要使用:排序的_点。在(length,false)NP的_groups_中,和我一样享受Rails!
class AddLengthColumnToBooks < ActiveRecord::Migration
  def change
    add_column :books, :length, :integer
  end
end