0

次のようにmeta_searchを使用しています。

# app/controllers/articles_controller.rb
def index
  @search = Article.search(params[:search])
  @articles = @search.all
end

# app/views/articles/index.html.erb
<%= form_for @search, :url => articles_path, :html => {:method => :get} do |f| %>
  <%= f.text_field :my_very_long_attribute_name_contains %><br />
  <%= f.submit %>
<% end %>

これは、「my_very_long_attribute_name」属性を検索できるようにすることで、期待どおりに機能します。

問題は、?search[my_very_long_attribute_name_contains]クエリ文字列に表示されることです。短い名前をこの属性にマップする最良の方法は何ですか? すなわち?search[mvlan_contains]

これは、長い属性名を短くしたいというだけのケースではありませんが、機密性の高い可能性のある属性の名前を、検索目的で偽装する必要もあります。

を確認しましたがalias_attribute、meta_search に属性エイリアスを認識させることができませんでした。

どんな提案でも歓迎します。

4

1 に答える 1

1

rspeicherが提案したように行うことができます。カスタム検索方法がパラメータ リストに表示されます。

ただし、Re: 属性の機密情報...ビューで属性名を知っている人がアプリケーションに潜在的な問題を引き起こす場合は、モデルとコントローラー層でどのようなセキュリティ手順が実行されているかを真剣に検討します.

于 2010-12-09T12:58:55.543 に答える