[英]Can't dup NilClass on association methods
我正在使用rails 2.3.5和ruby 1.8.7。 我正在建立一個簡單的TODO經理。 我擁有屬於用戶的任務,用戶有很多任務。
我正在使用acts_as_taggable_on_steroids
插件來標記任務,並使用restful_authentication plugin
進行注冊和用戶管理。
我在索引操作的視圖中得到一個奇怪的錯誤,上面寫着“無法復制NilClass”。 這是控制器代碼 -
@tasks = current_user.tasks
當我在視圖上迭代@tasks
時發生錯誤。 那是我做@tasks.each do |task|
現在我用這個替換控制器代碼
@tasks = Task.find(:all, :conditions => {:user_id => current_user.id})
這實際上是獲取相同的記錄。 這僅在開發模式下發生。 我猜這與緩存或加載有關。
可能有什么不對? 我是第一次面對這個問題。
編輯
好的,這絕對是一個緩存問題。 如果我在production.rb中生成config.cache_classes = true
,則生產模式中也會出現相同的錯誤。 但是我現在如何解決這個問題呢? 因為我不想為模型/控制器中的每個更改重新加載服務器。
編輯
這是我的用戶模型的樣子
class User < ActiveRecord::Base
has_many :tasks
has_many :projects
# There are some validations and standard methods that resful authentication
# provides that I am not showing here
end
這就是Task模型的樣子。
class Task < ActiveRecord::Base
belongs_to :bin
belongs_to :project
belongs_to :user
acts_as_taggable
def tag_list
super.join(', ')
end
end
任務控制器的索引方法如下所示
def index
@tasks = current_user.tasks
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @tasks }
end
end
希望這可以幫助。
得到它了。
從這里開始 ,
繼承或包含在引擎控制器中的某些類可能無法卸載並在第一次請求系統后導致問題。
對我來說,這是因為我在lib
中有一個文件是猴子修補用戶模型,我想這個文件中的用戶模型類沒有被緩存。
在lib文件夾中調用該類中的unloadable
可以解決問題。 所以我的lib文件看起來像這樣
class User < ActiveRecord::Base
unloadable
# stuff...
end
不管怎么說,多謝拉。
也許模型中的關聯有問題。 你能從那里粘貼一些代碼嗎?
您也可以嘗試在控制台中執行相同的操作。 它會給出同樣的錯誤嗎? 看看日志,你的兩個例子都生成相同的SQL查詢嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.