建立一个句子 Rails ActiveRecord where
如何最好地建立 where 使用 Rails ActiveRecord? 例如,假设我有一个返回博客列表的控制器的动作:
现在假设我希望能够传输参数 url 因此,控制器的此操作仅返回某个作者的消息:
我不喜欢它。 如果我向页面添加了一个订购或分区,或者更差,更差的查询字符串的可选参数 URL 要过滤,此操作控制器将变得非常复杂。
def index
@posts = Post.all
end
现在假设我希望能够传输参数 url 因此,控制器的此操作仅返回某个作者的消息:
def index
author_id = params[:author_id]
if author_id.nil?
@posts = Post.all
else
@posts = Post.where/"author = ?", author_id/
end
end
我不喜欢它。 如果我向页面添加了一个订购或分区,或者更差,更差的查询字符串的可选参数 URL 要过滤,此操作控制器将变得非常复杂。
没有找到相关结果
已邀请:
5 个回复
奔跑吧少年
赞同来自:
- 它基本上是懒惰的加载量 Post.all /只要 Post.all 立即返回一个数组
, 尽管 Post.scoped 刚返回关系的对象/. 此请求将无法完成,直到
你真的不会试图在演示中重复它 /打电话 .each/.
卫东
赞同来自:
IMHO 如果你想到的话,它有更多的意义 RESTful API, 索引意味着挽救一切并获得 /或表演/, 得到要求并显示它!
风见雨下
赞同来自:
有些区域被引入模型中,存在参数的存在:
然后在控制器中,您可以简单地放置如此多的过滤器,例如:
然后参数可以是以逗号分隔的一个值或值列表,另一个值正常。
如果一个 param 不存在,他只是错过了这句话 where 它不会通过此特定标准过滤。 如果存在参数,它是一个空字符串,它将 "过滤" 全部。
当然,这一决定不会达到所有情况。 如果您有一个具有多个过滤器的视点页面,但在第一次打开时,要显示所有数据,并且在按下按钮之前没有数据 "发送" 或类似的东西 /这个控制器会如何做到/, 你将不得不修复它。
我试过了 SQL 注射了它 rails, 似乎它会很好地应对,以便尽我所能保持安全。
裸奔
赞同来自:
然后你可以做一些这样的事情:
? filter[author_id]=1&filter[post_date]= ... 等等。
君笑尘
赞同来自:
http://guides.rubyonrails.org/routing.html
/滚动到2.7投资的资源/.