小编El_*_*dor的帖子

ActiveRecord上的范围关系

这是我的ActiveRecord模型,使用Rails 3.2:

class User < ActiveRecord::Base
    has_one :criterion
    has_many :user_offer_choices
end

class Offer < ActiveRecord::Base
    has_many :user_offer_choices

    def seen
        user_offer_choices.where(seen: true)
    end

    def accepted
        user_offer_choices.where(accepted: true)
    end
end

class Criterion < ActiveRecord::Base
    belongs_to :user
end

class UserOfferChoice < ActiveRecord::Base
    belongs_to :user
    belongs_to :offer
end
Run Code Online (Sandbox Code Playgroud)

我想获得看到报价的用户的所有标准.就像是 :

Offer.find(11).seen.users.criterions
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用ActiveRecord

我知道我可以这样做:

Criterion.joins(user: { user_offer_choices: :offer }).where(user: { user_offer_choices: {accepted: true, offer_id: 11}  } )
Run Code Online (Sandbox Code Playgroud)

但我希望能够在优惠(看到和接受)上使用我的范围.那我该怎么办呢?

编辑: 我找到了我要找的东西,Arel的合并方法:http://benhoskin.gs/2012/07/04/arel-merge-a-hidden-gem

activerecord ruby-on-rails ruby-on-rails-3.2

5
推荐指数
1
解决办法
3787
查看次数

如何在 Google Dataflow 中为工作人员指定磁盘类型?

在文档中有一个选项 workerDiskType但我无法让它工作。我尝试使用持久性 SSD。每次我尝试一些东西时,我都会得到一个400没有解释的http 代码。

我尝试了所有这些值:

  • 区域/$ZONE/diskTypes/pd-ssd
  • 区域/$ZONE/磁盘/pd-ssd
  • 项目/$PROJECT/zones/$ZONE/diskTypes/pd-ssd
  • 项目/$PROJECT/zones/$ZONE/disks/pd-ssd

什么是正确的格式?这个选项有效吗?

我从 Dataflow 得到的答案并不是很有帮助:

{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Request contains an invalid argument.",
    "reason" : "badRequest"
  } ],
  "message" : "Request contains an invalid argument.",
  "status" : "INVALID_ARGUMENT"
}
Run Code Online (Sandbox Code Playgroud)

java google-cloud-dataflow

4
推荐指数
1
解决办法
829
查看次数