ActiveRecord查询界面和地图

时间:2017-09-13 16:42:45

标签: ruby activerecord

我试图在特定的数据结构中映射AR关系(以呈现为JSON)而我无法使其工作,由于某种原因,关系总是为零

Client.includes(:fixed_odds_account, person: [:phones, :emails]).map do |client|
  {
    id: client.id,
    uri: client.uri,
    updated_at: client.updated_at,
    balance: client.fixed_odds_account.current_balance,
    email: client.person.emails.pluck(:address),
    first_name: client.person.first_name,
    last_name: client.person.last_name,
    number: client.person.phones.pluck(:number)
  }

我希望这会返回一系列哈希值,但它总是在"#34;关系,显然是零(而不是)。 奇怪的是,如果我删除Hash并且只是放置client.person我可以看到我的数据。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用#joins。使用#includes,您可能正在使用没有Person的客户端,因为它使用左外连接。您可能还想添加#uniq以删除重复项。

Client.joins(:fixed_odds_account, person: [:phones, :emails]).uniq.map #code omitted