首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可跟踪对象的控制器设计

可跟踪对象的控制器设计
EN

Stack Overflow用户
提问于 2011-11-15 13:44:05
回答 2查看 507关注 0票数 0

我有三种型号,用户,产品。也就是说,用户可以(不)喜欢产品.

我想知道设计控制器和模型的最佳实践是什么。

  1. 创建likes_controller和进程创建/销毁操作
  2. 创建类似/不同于products_controller
  3. 或其他什么的操作。

第二个问题:我应该将"retrieve_likes“、”喜欢?“或”喜欢!/unlike!“之类的方法放入哪个模型?

编辑:我通过TeachMeToCode.com,https://github.com/cavneb/make_flaggable找到了这个优秀的宝石

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-15 14:32:02

我以前做过第1和第2种选择,它们都很好。这真的取决于你的哲学和你喝了多少其余的助力。与#1一起成为RESTful。我发现,坚持使用更多的RESTful接口可以使测试看起来更简洁,而代码一般看起来更简洁。然而,牺牲了拥有更多文件的代价。

至于模型,您可以创建一个可爱的模块,其中包含“喜欢?”等方法。然后,您可以将该模块包含在任何需要它们的模型中。看看一些扩展ActiveRecord模型的宝石,从而了解如何做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2011-11-15 14:08:52

你可以有三张桌子:

代码语言:javascript
复制
users: user_id, name, like_id
products: product_id, info, like_id
likes: like_id, user_id, product_id

在您的User模型中:

代码语言:javascript
复制
has_many :likes

在您的Product模型中:

代码语言:javascript
复制
has_many :likes

在您的Like模型中:

代码语言:javascript
复制
belongs_to product
belongs_to user

这将允许您做一些事情,比如调用<%= @product.likes.count %>来计数某件事物被喜欢的次数。

或者在用户控制器中:@liked_products = User.likes.map(&:product)

要创建填充likes表的链接,您需要使用add_likeremove_like方法制作一个喜欢的控制器。

您可能还需要了解一些称为“嵌套路由”的知识,以使其全部正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8137258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档