【发布时间】:2017-11-07 11:53:53
【问题描述】:
我有 3 个模型产品、选项和评论。一个产品有很多选择,有很多cmets。选项属于产品,评论属于产品。
我想在 Comment 模型中创建一个范围,以获取 product_id 与 Option 模型中的 product_id 匹配的所有 cmets,然后检查 Comment 模型中的属性“message”是否像任何属于的选项到那个product_id。我有一个工人将产品变量传递给 Comments 模型。
我可以使用以下代码来接近,但我想让它动态化,而不是对查询的第二部分进行硬编码。
Comments.rb
scope :get_options, -> (product) { where(“comments.product_id = ? AND comments.message LIKE ?”), product.id, “Large Blue” }
这里,Large Blue 是选项表中现有选项的示例。
这个范围正在模拟我试图返回的内容,但我想调用属于该产品的选项而不是硬编码它。
任何有关此问题的最佳实践的帮助将不胜感激!
谢谢
【问题讨论】:
-
你可以从 product.options 中通过关联在范围内获取它,它返回与产品相关的所有选项......现在游戏是你的了
-
我给你留下了答案。您能否也将
Product、Option和Comment字段和关联粘贴在这里? -
您是说您希望能够将特定选项或其属性之一传递到范围中,并查看该产品是否有具有该选项的 cmets?或者您是否希望查看与产品关联的任何 cmets 是否具有与该产品关联的任何选项之类的消息?
-
我正在尝试查看与产品关联的任何 cmets 是否具有与该产品关联的任何选项类似的消息。
标签: ruby-on-rails