ror关于多条件查询的问题(在线等)

fq1798 2011-08-30 03:20:55
第一次利用ror进行项目开发,所以遇到很多问题:

这里是多条件查询的问题:

背景: 查询用户的账户表,条件为编号,余额的区间(包括上区间、下区间、或者某个区间)


问题:我想利用原生的rails arel查询所需要的数据结果,条件是动态的,比如如果编号为空,则不作为sql
的查询条件。

求大神帮忙啊。
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
glglglglglgllll 2011-12-15
  • 打赏
  • 举报
回复
完全没有必要。你上面写的。。。
conditions = {}
conditions[: start_available] = xx unless pramas[:start_available].blank?
conditions[: end_available] = xx unless pramas[:end_available] .blank?
XXX.find(
:all,
:conditions => conditions
)
或者用merge
fq1798 2011-09-04
  • 打赏
  • 举报
回复
嘿嘿,确实有点乱啊,

谢了 lnlne,其实我一直想找一个方式,类似于如下这种的:

XXX.find(
:all,
:conditions => {
:id => xxx if pramas[:id] != "",
:start_available => xxx if pramas[:start_available] != "",
:end_available => xxx if pramas[:end_available] != "",

}
)

这样有一个好处,就是不用在想与各种组合有关的查询条件了啊。
lnlne 2011-09-02
  • 打赏
  • 举报
回复
不好意思的说,代码很乱。

尽量不要写太长的函数,虽然不知道你的设计是什么样子。
但是从上面的代码来看,感觉可以拆分的。
尽可能的不要将很多逻辑混杂在一起。

建议:
一共可能有3个条件::id,:start_availavle,:end_available
你可以考虑下你的输入一共有几种可能的组合,之后按照组合的种类进行分类。
fq1798 2011-08-30
  • 打赏
  • 举报
回复
#得到搜索条件
def self.search_conditions(params)
conditions = ""
counts = 1
unless(params.nil?)
if (params[:account][:id] != "")
conditions += ("id = " + params[:account][:id])
counts += 1
end
if(counts != 1)
conditions += " and "
end
if(params[:account][:start_availavle] != "")
conditions += ("available >= " + params[:account][:start_availavle])
counts += 1
end
if(counts != 1)
conditions += " and "
end
if(params[:account][:end_available] != "")
conditions += ("available <= " + params[:account][:end_available])
end
end
puts "888888888888888888888888888 " + conditions
return conditions
end


这是最后的权宜之计,,期待高手 有更好的解答
fq1798 2011-08-30
  • 打赏
  • 举报
回复
所以我想问一下。如何 构造 conditions啊
fq1798 2011-08-30
  • 打赏
  • 举报
回复
谢谢 rrong_m 我首先有如下思路,拼字符串:

#得到搜索条件
def self.search_conditions(params)
@conditions = ""
unless(params.nil?)
@conditions += ("id = " + params[:account][:id]) if params[:account][:id] != ""
@conditions += ("available >= " + params[:account][:start_available]) if params[:account][:start_availavle] != ""
@conditions += ("available <= " + params[:account][:end_available]) if params[:account][:end_availavle] != ""
end
puts "888888888888888888888888888 " + @conditions
return @conditions
end


但是这样写起来非常麻烦,上面这段代码,还需要判断是否加 and
glglglglglgllll 2011-08-30
  • 打赏
  • 举报
回复
构造conditions
企业智慧中台规划与建设总体方案是一个针对企业数字化转型需求而设计的综合性IT解决方案。该方案旨在构建一个集中、高效和灵活的中台架构,通过整合企业内外部的数据资源、业务流程和应用服务,为企业提供一个统一的数字化运营平台。在当前的商业环境下,企业面临着激烈的市场竞争和不断变化的客户需求。为了应对这些挑战,企业需要快速响应市场变化,提高运营效率,降低成本,并实现持续创新。因此,企业智慧中台的规划和建设成为了关键任务。该方案的核心思想是将企业的业务逻辑、数据管理和技术创新紧密结合起来,形成一个高度集成的智慧中台系统。通过构建标准化的数据模型和接口,实现数据的一致性和可访问性,同时提供丰富的数据分析和挖掘工具,帮助企业发现潜在的商业价值和机会。此外,该方案还注重用户体验和业务敏捷性。通过构建灵活的应用开发框架和API接口,支持快速的业务迭代和定制化需求,满足不同部门和角色的个性化需求。同时,通过智能化的自动化流程和决策支持系统,提高企业的决策效率和准确性。总之,企业智慧中台规划与建设总体方案是一个全面而深入的IT解决方案,旨在帮助企业实现数字化转型,提升竞争力和创新能力。通过构建集中、高效和灵活

2,763

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ruby/Rails
社区管理员
  • Ruby/Rails社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧