更新2
Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND
cama_custom_fields_relationships.value LIKE ?","localization",
"%Paris%").merge(Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND cama_custom_fields_relationships.value = ?","type-localization", "2"))
为什么此合并无效?
分别执行时,它返回我相同的结果...合并应作为交集起作用,因此应成为公共部分。我不明白
更新
我将尝试以更具概念性的方式提问。
我有B型,其中有slug:text,value:text,belongs_to:A型
我的模型A的名称为:字符串,has_many:模型B
@posts_one =我搜索slug =“ something”,值=“ city”的模型B
@posts_two =我搜索B型,其中slug =“ mood”,value =“ good”
我有2个基于不同参数的结果。两者都属于:模型A
现在,我只想返回普通的belongs_to
。
所以
@posts_one将返回20个带有model_a_ids的结果
@posts_two将返回20个带有model_a_ids的结果
我只想返回这2个查询的常见model_a_ids并立即查找帖子。我试图在一个查询中做到这一点,但不知道是否可能
原始帖子
我使用Camaleon CMS,并尝试基于其他“自定义字段”创建过滤器。我想回答这个问题,您不必知道此cms。
我想找到2个查询的共同部分,或者一次查询(最好)
我有
@posts = Cama::PostType.first.posts.includes(:custom_field_values)
@param_localization = "Paris"
@param_type_localization = "House"
@posts_one = @posts.merge(CamaleonCms::CustomFieldsRelationship.
where("cama_custom_fields_relationships.custom_field_slug = ? AND
LOWER(cama_custom_fields_relationships.value) LIKE ?", "localization",
"%#{@param_localization}%"))
puts @posts_one.count => 2
@posts_two = @posts.merge(CamaleonCms::CustomFieldsRelationship.where(custom_field_slug:
"type-localization", value: @param_type_localization))
puts @posts_two.count => 2
问题是如何将其合并在一起或使其成为一个查询?当我在一个where clause
中完成该操作时,它返回0个结果,因为我需要找到2个具有不同值和子项的不同自定义字段关系,但它与通过:custom_fields_values到发布的关系,因此我必须进行2个查询猜(像我一样)。首先,我用slug = localization
找到customFieldRelationship,其次用slug = type_localization
找到,然后我需要找到common part
我尝试@result = @posts_one.merge(@posts_two)
,但当时没有任何结果。我以为它将返回我“ 公共部分”的关联,这意味着 2个结果
如何结合使用它来查找满足两个查询要求的帖子?
让我知道我是否对我的问题解释得不够充分。
答案 0 :(得分:0)
您需要将其与SQL结合:(未经测试)
@posts_combined = @posts.merge(CamaleonCms::CustomFieldsRelationship.
where("(cama_custom_fields_relationships.custom_field_slug = ?
OR cama_custom_fields_relationships.custom_field_slug = 'type-localization')
AND LOWER(cama_custom_fields_relationships.value) LIKE ? ", "localization",
"%#{@param_localization}%"))