1

私はdefault_scopeを持つモデルを持っています:

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

次に、show アクションでこのスコープを無効にする必要があります。

@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{ }

うまくいきませんでした。show アクションからすべての行を削除すると、次のようになるため、 @campaign は別の場所で以前に決定されたようです。

def show
end

そして、私はまだこのエラーが発生しています:Couldn't find Campaign with id=1 [WHERE (campaigns.status != 'archive')]

でこのトリックを見つけましたload_and_authorize_resourceが、どうすれば修正できますか?

4

2 に答える 2

2

これを参照

Campaign.unscoped {
  Campaign.find(params[:id]) 
}
于 2012-12-12T12:56:05.557 に答える
1

ドキュメントによると、あなたが持っているものはうまくいくようです。ただし、unscoped のブロック形式を使用することをお勧めします試してみて、問題が解決するかどうかを確認してください。

于 2012-12-12T12:52:51.357 に答える