我试图通过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字段打破对象的问题。