0

私はRubyとRailsに非常に慣れていないので、これはおそらく非常に単純な質問ですが、私には非常に混乱します。

私にはユーザーがいます(モデル、コントローラー、ビュー、およびすべてがすでに設定されています)。ここで、ユーザーが自分の好みを示すことができるものを紹介したいと思います。たとえば、ユーザーが5つの好きな食べ物を示してから、私が好きな食べ物でユーザーを検索できるようにする場合があります。

これは私の最初のRailsプロジェクトであり、これにアプローチする方法が少しわかりません。これまでの私の考え:

1)ブール配列をユーザーモデルに追加し、配列をチェックボックスとしてレンダリングしてから、なんらかの方法で保存します。(そのための移行を生成する方法、またはそのように実装されている場合は食品で検索する方法がわかりません)。

2)食品モデルを作成has_manyし、ユーザーモデルの関係を使用して、ユーザーを食品にリンクします。そうすれば、食べ物に基づいてユーザーを検索できるようになると思いますか?食品モデルは、それに関連する情報を持っていないので、やり過ぎかもしれないと思います。これは、ユーザーに添付するものにすぎません。

提案、コード、ヒント、またはヒントをいただければ幸いです。

4

1 に答える 1

1

まず、リソースとしてhttp://railscasts.com/を使用する必要があります。ここで説明していることはすべて、このサイトにはチュートリアルがあります。

リストの検索と返送は面倒なので、ユーザーモデルにいくつかのフィールド(つまり、fav_food_one、fav_food_twoなど)を追加する場合は注意が必要です。

has_manyアソシエーションがある場所で何かが必要になる可能性が高くなります

User: username, name, email, etc

Food: name, category, fun_facts, etc

UserFavoriteFoods: user_id:integer, food_id:integer

モデルでは、このような関連付けを作成します。

User=> 
  has_many :user_favorite_foods, :dependent => :destroy
  has_many :foods, :through => :user_favorite_foods

Food=>
  has_many :user_favorite_foods, :dependent => :destroy
  has_many :users, :through => :user_favorite_foods  

UserFavoriteFoods =>
  belongs_to :user
  belongs_to :food

次に、(User#Showを想定している)ビューで、次のようなことを行うことができます

<% @user.foods.each do |food| %>
 <li><%= food.name %></li>
<% end %>

編集=>

のようなgemを使用simple_formして、ユーザーフォームに適用することもできます。

この種のリストで使用f.association :foodsすると、選択ボックスが自動的に表示され、ユーザーはさまざまな食品を簡単に選択できます。

于 2013-02-25T04:28:52.873 に答える