1

我有一个有很多关联的交易模型。关联之一是货币。交易表和货币表都有一个名称列。现在,我有以下 ActiveRecord 查询:

Deal.
  joins(:currency).
  where("privacy = ? or user_id = ?", false, doorkeeper_token.resource_owner_id).
  select("deals.name as deal_name, deals.date as deal_creation_date, deals.amount as deal_amount, currencies.name as currency_name, currencies.symbol as currency_symbol")

这个查询不起作用,它的结果是一个没有属性的 Deal 对象数组。根据 IRC 上的某个人的说法,“as”部分是不正确的,因为 ORM 不知道如何将列分配给哪个属性(或类似的东西)足够公平。我尝试添加 attr_accessor 和 attr_accessible 子句,但没有奏效。

请问我怎样才能使上述查询工作?我期望的结果是一个具有 , 等虚拟属性的 Deal 对象deal_name数组deal_creation_date

4

1 回答 1

2

很可能查询工作正常,但由于 Deal 实现该方法的方式,当您将返回的 Deal 对象打印出来时,它们似乎没有任何属性inspect

因此,如果您将查询结果分配给一个变量,您将看到它显示为空:

v.each do |deal| ; puts deal.inspect ; end

虽然这显示了您想要的属性:

v.each do |deal| ; puts deal.to_yaml ; end

更多细节在这个问题中。

于 2013-05-09T19:57:42.057 回答