0
私のモデルには、管理パネルのフィルタである必要があるいくつかのスコープがあります。ActiveRecordスコープをfilter_by文字列として渡す
Filter by: <a href="?filter_by=archived_newspaper">Archived Newspapers</a>
<a href="?filter_by=current_magazine">Current Magazines</a>
periodical.rb
class Periodical < ActiveRecord::Base
scope :archived_newspaper, where("category = 'Newspaper'").where("archived = ?", true)
scope :current_magazine, where("category = 'Magazine'").where("archived = ?", false)
end
index.html.erbはどのようになど、ソート改ページ、検索、などの他の典型的なものがあるだろうことを考えると、コントローラを実装するのでしょうか?
class PeriodicalController < ApplicationController
def index
@periodicals = Periodical.page(params[:page])
@periodicals = @periodicals.order(params[:sort_by]) if !params[:sort_by].blank?
# Scope here
end
end
いやがsend私が神経質になります... –
ええ、私は最大ではありませんよファン、しかしそれを合理的にうまく保護することができます、彼らは私がそれだけでfilter_by paramは、周期モデルからアーリースコープのメソッドを0にすることができますコード化しました。他の唯一の方法は、許容されるfilter_by値をコントローラに明示的にコーディングし(そして依然として送信を使用する)、またはケース/スイッチを使用してスコープをハードコードすることです。私は何を意味するのかを編集するでしょう –
@世紀に送ることは神経質にならないはずです。これはRubyの一部であり、有用なものです。メソッドがparamsを取らず、paramsでメソッドを送信しないようにしてください。セキュリティ上の懸念はありません。 –