2013-04-29 236 views
0

我对Ruby on Rails很新。Ruby on Rails模型关系

我试图建立一个用户模型和十个不同项目的模型之间的关系。

我的目标是让用户能够检查项目模型中的项目,然后让已经检查过的项目显示在他们的个人资料中。

我已经使用Michael Hartl Ruby on Rails tutorial高达 创建微博的重点。 任何有助于我完成此教程的技巧将不胜感激。

谢谢!

回答

0

基本上,你想要的是:
一个Userhas_and_belongs_to_many :items
而且,Itemhas_and_belongs_to_many :users

这是多对多的关系。因为,用户可以有很多项目,并且项目也可以属于多个用户。在rails中,这里has_and_belongs_to_many将隐式创建一个表items_users,它将包含两者的id,建立关系。

了解更多关于该协会在这里 - http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

使用checkbox标签用于显示所有项目的复选框。文档 - http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box

基于任何复选框被选中,保存记录,建立关系。

完成。 :)

0

我不知道其他教程,如果你已经完成了哈特尔的话,那么你对整个rails框架有非常好的理解。我会有一个items_list模型。其中有一个user_id外键将自己与用户关联起来。然后我可以有一个项目模型,它有一个items_list外键将它们关联到一个列表。然后项目模型可以有一个布尔型字段“主动”或“检查”或其他。使用这些,以及相关的关系和一些范围,你可以得到你想要的。

只要确保在请求这些数据时使用includes helper,否则您将很容易出现N + 1问题。

http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations