Heroku上的活动记录查询错误结果

时间:2016-11-24 08:59:08

标签: sql ruby-on-rails postgresql activerecord heroku

情况

概述

我有一个项目,iOS应用程序发送带有多标记(字符串)参数的发布请求。 标记以日语编写

请求被发送到rails项目上的ruby,它返回文章匹配发送的标签(和查询)。

在rails项目文章和标签上有has_and_belong_to_many关系。

DB

  • 开发:SQLite
  • 制作:PostgreSQL


问题

在本地服务器上运行时,rails项目会返回正确的结果(通过rails服务器命令),但在部署到Heroku时它无法正常工作。


防爆。 TagA和TagB作为参数发送。

结果文章应包含TabA和TagB,但某些返回的文章只包含TagB。

它似乎在某些标签上正常工作。


我该如何正常工作?


客户代码(Swift)

static func serverWhere( tags: [String] , completion: (articles: [FeedArticle]) -> () ) {

        Alamofire.request(.POST, Constants.domain + "/amsarticles/tags", parameters: ["tags": tags ], headers: Constants().authHeader() )
            .responseJSON { response in

                switch response.result {
                case .Success:
                    if let value = response.result.value {
                        print(response.response?.statusCode)
                        let json = JSON(value)

                        var articles: [FeedArticle] = []
                        for articleJson in json.arrayValue {
                            if let article = deserialize(articleJson) {
                                articles.append(article)
                            }
                        }


                        dispatch_async(dispatch_get_main_queue(), {
                            completion(articles: articles )
                        })
                    }

                case .Failure(let error):
                    print(response.response?.statusCode)
                    print(error)
                    completion(articles: [])
                }
            }
    }


服务器代码(ruby)

def tags

  limit = 300
  required_tags = params[:tags] 

  articles = Amsarticle.joins(:tags).order("id DESC").limit( limit )
     .where(tags: { name: required_tags })
     .group('amsarticles.id')
     .having('count(*) = ?', required_tags.count)

  distributable_articles = articles.where("distribute = ?", true ) 

  render status: 200, json: distributable_tag_relation_merged_articles_json( distributable_articles )

end

0 个答案:

没有答案