【问题标题】:Find all with conditions查找所有有条件的
【发布时间】:2015-08-10 09:22:26
【问题描述】:

我有 3 个模型。 LimitType、LimitGroup 和 LimitGroupValue。

class LimitGroupValue < ActiveRecord::Base

  belongs_to :limit_group
  belongs_to :limit_type

end

我有 limit_group 对象(有很多 limit_group_values),我想找到属于具有特定属性值的 limit_type 的所有 limit_group_values(代码为“最低赌注”)。

我试过了:

@group.limit_group_values.find(:all, conditions: { limit_type: {code: 'WAGER_MIN'}})

@group.limit_group_values.find(:all, conditions: "limit_type.code = 'WAGER_MIN'")

我似乎真的找不到办法。我做错了什么?

附: :使用导轨 2。

【问题讨论】:

  • @TheFabio "WAGER_MIN" 是 LimitType 表中的代码列
  • 我正在为 rails 4 写一个答案... v2 超出了我的范围...

标签: sql ruby-on-rails activerecord ruby-on-rails-2


【解决方案1】:

试试下面 -

@group.limit_group_values.find(:all, :joins => :limit_type , :conditions => [ "limit_type.code = ?", 'WAGER_MIN']).to_a

【讨论】:

  • PG::UndefinedTable: 错误:缺少表“limit_type”的 FROM 子句条目
  • 你也必须加入:limit_type,我已经更新了答案。您也应该在 LimitGroup 和 LimitType 模型中有 has_many 关联。
  • 嗯.. 同样的错误。这是 sql 输出: SELECT "limit_group_values".* FROM "limit_group_values" INNER JOIN "limit_types" ON "limit_types".id = "limit_group_values".limit_type_id WHERE ("limit_group_values".limit_group_id = 1 AND (limit_type.code = 'WAGER_MIN' ))。我不希望它假设 limit_group_id 是 1。只需找到具有代码属性“WAGER_MIN”的那个
  • 对于postgresql,当我们运行查询时,双配额和单配额会有一些问题。尝试使用 join 和 to_a 进行查询。 IE。 @group.limit_group_values.find(:all, :joins =&gt; :limit_type, conditions: { limit_type: {code: 'WAGER_MIN'}}).to_a
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多