ruby on rails 3.2-如何为用户存储首选项列表



我对ruby和rails很陌生,所以这可能是一个很简单的问题,但我很困惑。

我有用户(模型、控制器、视图和所有的东西都已经设置好了(。现在,我想介绍一些用户可以指示他们的偏好的东西。例如,用户可以指示他们最喜欢的5种食物是什么,然后我可以按最喜欢的食物搜索用户。

这是我的第一个铁轨项目,我有点不确定如何处理。到目前为止我的想法:

1( 在我的用户模型中添加一个布尔数组,将数组呈现为复选框,然后以某种方式存储它。(我只是不确定如何为此生成迁移,或者如果这样实现的话,如何按食物进行搜索(。

2( 创建一个食物模型,并使用我的用户模型中的has_many关系将用户链接到食物。我想我可以根据食物搜索用户了吗?我觉得Food模型可能有些过头了,因为它不是有任何相关信息的东西。它只是附在用户身上的东西。

任何建议、代码、提示或提示都将不胜感激。

首先,您应该使用http://railscasts.com/作为一种资源。你在这里描述的一切,这个网站都有教程。

由于搜索和返回列表会很麻烦,因此在用户模型中添加多个字段(即favod_fod_one、favo_food_two等(时需要小心。

你更可能想要一些你有很多关联的东西

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

然后在你的(我假设用户#Show(视图中,你可以做一些类似于的事情

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

编辑=>

您也可以使用类似simple_form的gem,并将其应用于您的用户表单

在这种列表中使用f.association :foods会自动弹出一个选择框,并允许用户轻松选择不同的食物。

最新更新