Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails是隐藏未发布内容的一种方式_Ruby On Rails_Activemodel - Fatal编程技术网

Ruby on rails Rails是隐藏未发布内容的一种方式

Ruby on rails Rails是隐藏未发布内容的一种方式,ruby-on-rails,activemodel,Ruby On Rails,Activemodel,我以前在Node或Django中做过无数次的事情,现在有点被卡住了 我正在构建一个只支持API的Rails应用程序 假设我有一个包含博客帖子的帖子模型。该模型有一个published属性,该属性确定某个帖子是否已向较大的公众开放 显然,如果标志为true,控制器中的目标是返回POST的JSON 对于集合,我在我的Post模型中创建了一个简单的作用域,如下所示: scope :published, -> { where(published: true) } 然而,对于单个请求,我不确定

我以前在Node或Django中做过无数次的事情,现在有点被卡住了

我正在构建一个只支持API的Rails应用程序

假设我有一个包含博客帖子的帖子模型。该模型有一个published属性,该属性确定某个帖子是否已向较大的公众开放

显然,如果标志为true,控制器中的目标是返回POST的JSON

对于集合,我在我的Post模型中创建了一个简单的作用域,如下所示:

  scope :published, -> { where(published: true) }
然而,对于单个请求,我不确定什么是正确的,或者更确切地说:Rails处理这种请求的方式。我可以强迫它,但我觉得像这样的事情在配置技巧上有一个整洁的约定

本质上,我对最干净的解决方案很好奇:如果post的published属性为true,则返回post对象,如果为false,则返回404

我应该看看示波器吗?序列化程序?宝藏藏在哪里

谢谢你的贡献

没有金弹,但使用示波器是可以的

在控制器中,您可能有类似的功能:

post=post.findparams[:post\u id] 现在,使用已发布的作用域将按预期工作,其类型/结果为SQL和:

post=post.published.find参数[:post_id] 它不会首先从数据库中查询所有已发布的帖子,然后再查看它们。这里特定的ORM代码对象数据库映射的美妙之处在于,您最终只需对数据库进行一次查询,如日志文件中所示

返回404或任何仍然取决于您/您的控制器业务-as find的东西将引发异常,如果没有找到任何东西,它将默认为您希望的行为。

没有金弹,但使用scopes是可以的

在控制器中,您可能有类似的功能:

post=post.findparams[:post\u id] 现在,使用已发布的作用域将按预期工作,其类型/结果为SQL和:

post=post.published.find参数[:post_id] 它不会首先从数据库中查询所有已发布的帖子,然后再查看它们。这里特定的ORM代码对象数据库映射的美妙之处在于,您最终只需对数据库进行一次查询,如日志文件中所示

返回404或任何仍然由您/您的业务控制器决定的东西-as find将引发异常,如果未找到任何内容,它将默认为您希望的行为