我对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
会自动弹出一个选择框,并允许用户轻松选择不同的食物。