在Rails ActiveRecord中,为什么我的join表中的一列抛出错误消息?



我试图通过Rails ActiveRecord从数据库显示数据。我的模型中的两个相关部分如下所示。然而,当我尝试执行这个时,我得到的是undefined methodalert_message。当我注释outrecord.alert_message时,我没有得到这个错误。

我假设我的JOIN将两个表合并为一个,并且我认为这意味着我可以从合并表中访问名为alert_message的列。那么,为什么说alert_message没有定义呢?

谢谢。

def maintenance_history
  MyRecord.where('my_records.org_id=?', self.org_id).order('vehicle_id')
end

self.my_history.joins("JOIN 
          alerts ON 
          my_records.id = my_record_id").group("box_id, 
          meter, alert_message, box_id").each do |record|
            # record.alerts.each do |item|
                csv << [record.id, 
                record.box.name,            
                number_with_precision(record.meter.to_s,
                         :precision => 0, :delimiter=> ','),
                record.alert_message, currency(0, record.parts, 1),           
                currency(0, record.labor, 1),
                currency(record.parts, record.labor, 1),
                record.vendor.name]

根据我的经验,您需要添加.select来指定连接表中的附加字段。参见http://guides.rubyonrails.org/active_record_querying。

添加
    .select(my_records.*, alerts.field1, alerts.field2)

尽管你可以只尝试提醒。我发现了id字段打破对象的问题。

最新更新