我有三种型号,用户,产品。也就是说,用户可以(不)喜欢产品.
我想知道设计控制器和模型的最佳实践是什么。
第二个问题:我应该将"retrieve_likes“、”喜欢?“或”喜欢!/unlike!“之类的方法放入哪个模型?
编辑:我通过TeachMeToCode.com,https://github.com/cavneb/make_flaggable找到了这个优秀的宝石
发布于 2011-11-15 14:32:02
我以前做过第1和第2种选择,它们都很好。这真的取决于你的哲学和你喝了多少其余的助力。与#1一起成为RESTful。我发现,坚持使用更多的RESTful接口可以使测试看起来更简洁,而代码一般看起来更简洁。然而,牺牲了拥有更多文件的代价。
至于模型,您可以创建一个可爱的模块,其中包含“喜欢?”等方法。然后,您可以将该模块包含在任何需要它们的模型中。看看一些扩展ActiveRecord模型的宝石,从而了解如何做到这一点。
发布于 2011-11-15 14:08:52
你可以有三张桌子:
users: user_id, name, like_id
products: product_id, info, like_id
likes: like_id, user_id, product_id在您的User模型中:
has_many :likes在您的Product模型中:
has_many :likes在您的Like模型中:
belongs_to product
belongs_to user这将允许您做一些事情,比如调用<%= @product.likes.count %>来计数某件事物被喜欢的次数。
或者在用户控制器中:@liked_products = User.likes.map(&:product)。
要创建填充likes表的链接,您需要使用add_like和remove_like方法制作一个喜欢的控制器。
您可能还需要了解一些称为“嵌套路由”的知识,以使其全部正常工作。
https://stackoverflow.com/questions/8137258
复制相似问题