我有一个有很多关联的交易模型。其中一个关联是货币。交易表和货币表都有一个名称列。现在,我有以下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_name
,deal_creation_date
等虚拟属性的交易对象数组。
答案 0 :(得分:2)
查询很可能正常工作,但由于Deal实现inspect
方法的方式,返回的Deal对象在打印时似乎没有任何属性。
因此,如果您将查询结果分配给变量,您会看到它显示为空:
v.each do |deal| ; puts deal.inspect ; end
虽然这显示了您想要的属性:
v.each do |deal| ; puts deal.to_yaml ; end
更多详情请见this question。