簡體   English   中英

Rails 3作用域發現給出了ActiveRecord :: ReadOnlyRecord

[英]Rails 3 scoped finds giving ActiveRecord::ReadOnlyRecord

我正在將Rails應用程序從2.3.10升級到3.0.4,並且在我的控制器中更新模型時遇到了問題。 我一直在“查找”模型查找,以防止用戶更新不屬於它們的對象。 它在2.3中按預期工作,但我在Rails 3中使用update_attributes得到一個ActiveRecord :: ReadOnlyRecord錯誤。

在Rails 3中執行此操作的正確方法是什么?

項目管理員:

def update
  @project = current_user.projects.find(params[:id])

  if @project.update_attributes(params[:project])
    # saved
  else
    # not saved
  end
end

事實證明,它與使用范圍來模擬活動記錄關聯有關。 我能夠通過向我的示波器添加.readonly(false)來修復它。

一種可能的解決方案是創建新文件config / active_record_monkey_patch.rb並在其中添加以下內容。

module ReadOnlyFalse
  def self.included(base)
    base.class_eval do
      def readonly?
        false
      end
    end
  end
end

ActiveRecord::Base.send(:include, ReadOnlyFalse)

以上代碼適用於所有模型readonly(false)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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