簡體   English   中英

無法在關聯方法上重復NilClass

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM