我想附加AND
条件取决于这样的条件:
@flag = true || false;
@results = Model.where(conditions).where(conditions_depend_on_flag);
//简单的方法:
if (@flag) {
@results = Model.where(conditions);
} else {
@results = Model.where(conditions).where(conditions_depend_on_flag);
}
我期望的例子:
@results = Model.where(conditions).where(conditions_depend_on_flag, @flag == true);
我不知道是否可能。
你可以给我一些建议吗?答案 0 :(得分:3)
@results = Model.where(conditions)
@results = @results.where(conditions_depend_on_flag) if @flag
答案 1 :(得分:0)
我们可以将2个条件组合成1个where语句:
为了方便起见,我假设:
conditions = created_at < 1.day.ago
conditions_depend_on_flag = updated_at > 1.day.ago
所以查询将是:
Model.where(
'created_at < ? AND (? OR updated_at > ?)', 1.day.ago, !@flag, 1.day.ago
)
漂亮的SQL:)
答案 2 :(得分:0)
使用sql条件的范围
在模型中
scope :conditions_depend_on_flag, ->(flag) { where(....) if flag }
的任何地方
@results = Model.where(conditions).conditions_depend_on_flag(@flag)