我对ruby和rails很新,所以这可能是一个非常简单的问题,但对我来说很困惑。
我有用户(模型,控制器,视图和所有设置都已建立)。现在我想介绍一些用户可以指出他们的偏好是什么的东西。一个例子是用户可以指出他们最喜欢的5种食物是什么,然后让我能够通过喜欢的食物搜索用户。
这是我的第一个铁轨项目,我有点不确定如何处理这个问题。到目前为止我的想法:
1)在我的User模型中添加一个布尔数组,将数组渲染为复选框,然后以某种方式存储它。 (我只是不确定如何为此生成迁移,或者如果按照这样实现如何按食品搜索)。
2)创建一个Food模型并使用我的User模型中的has_many
关系将用户链接到食物。我想我能够根据食物搜索用户?我觉得食物模型可能有点矫枉过正,因为它不具备与之相关的任何信息。它只是附加到用户的东西。
任何建议,代码,提示或提示都将非常受欢迎。
答案 0 :(得分: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 %>
编辑=&GT;
您还可以使用simple_form
之类的gem,并将其应用于您的用户表单。
在此类列表中使用f.association :foods
会自动显示一个选择框,让您的用户可以轻松选择不同的食物。