簡體   English   中英

在rails控制台中無范圍工作但在控制器操作中無效

[英]Unscoped work in rails console but not work in controller action

我有default_scope的模型:

class Campaign < ActiveRecord::Base
  default_scope where("campaigns.status != ?", "archive")
end

然后我需要在show action中禁用此范圍:

@campaign = Campaign.unscoped.find(params[:id])

但我看到Couldn't find Campaign with id=1 [WHERE (campaigns.status != 'archive')]

然后我在rails控制台中嘗試了相同的解決方案:

 Campaign.unscoped.find(1)
 SELECT `campaigns`.* FROM `campaigns` WHERE `campaigns`.`id` = 1 LIMIT 1 

一切正常,我在控制器中做錯了什么?

更新:

Campaign.unscoped {}

也沒用。 似乎@campaign在其他地方和之前確定過,因為我從show動作中刪除了所有行,現在它看起來像:

def show
end

我仍然收到此錯誤: Couldn't find Campaign with id=1 [WHERE (campaigns.status != 'archive')]

我在load_and_authorize_resource找到了這個技巧,但我該如何解決呢?

參考這個

Campaign.unscoped {
  Campaign.find(params[:id]) 
}

根據文檔,看起來你的工作會很好。 但是, 這里提到建議使用無結構的塊形式。 您可以嘗試一下,看看它是否能解決問題。

暫無
暫無

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

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