我有3个型号产品,选项和评论。产品有很多选项,并有很多评论。选项属于产品,评论属于产品。
我想在Comment模型中创建一个范围,以获取product_id与Option模型中的product_id匹配的所有注释,然后检查Comment模型中的属性“message”是否类似于属于任何选项到那个product_id。我有一个将产品变量传递给Comments模型的worker。
我可以使用以下代码接近,但我想使其动态而不是硬编码查询的第二部分。
Comments.rb
scope :get_options, -> (product) { where(“comments.product_id = ? AND comments.message LIKE ?”), product.id, “Large Blue” }
此处,Large Blue
是Option表中存在的选项的示例。
这个范围正在模仿我想要返回的内容,但是我想调用属于该产品的Options而不是硬编码。
对此问题的最佳实践的任何帮助将不胜感激!
由于
答案 0 :(得分:0)
对于sqlite
Comment.joins(product: :options).where("comments.product_id = ? AND comments.message LIKE '%' || options.title || '%'")
我认为这应该与你看起来非常接近的工作