我的一个模型中有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'
让我查看所有重要文件。
首先,我们有Mongo的document.rb:
class Guide::Document
include MongoMapper::Document
key :city, Integer
key :trips, Array
key :themes, Array
key :places, Array
key :pace, String
key :date_from, Time
key :date_to, Time
key :host, String
key :length, Integer
timestamps!
end
然后,在指南文件中调用书籍模型:
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
Book.rb
:
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
任何提示或提示表示赞赏。
答案 0 :(得分:0)
这是一团糟。一旦你想让'length'成为Book的一个属性,一旦你希望Length成为一个与Book有关的独立模型。 我认为拥有长度模型毫无意义。 使用'length'作为Book属性。