我正在帮助拥有现有rails应用的人。我想知道如何处理具体的事情。我需要一份完整的报告(库存报告),以显示特定父级的完整历史记录。然后我想在报告/库存页面上显示结果。我在开发中使用sqlite3,在生产中使用mysql2,但我不知道该如何解决这个问题?
答案 0 :(得分:1)
您如何记录历史记录?它在相关的表格中吗?在过去,我使用相关的“历史”表来记录记录的创建和更新 - 这为相关记录提供了一个很好的事件时间表,并且可以通过关系调用,即:
型号:
# class whose history you are tracking
class Record < ActiveRecord::Base
has_many :logs
end
# class where you're storing the history log entries
class Log < ActiveRecord::Base
belongs_to :record
end
控制器:
class RecordController < ApplicationController
include RecordFactory
...
def create
if @record.create_new_record(record_params) # calls the factory
...
end
end
def update
if @record.update_existing_record(record_params) # calls the factory
...
end
end
...
end
工厂
class RecordFactory
def create_new_record(record_params)
Record.create!(record_params).tap do |record|
Log.create(...)
end
end
def update_existing_record(record_params)
Record.update_attr!(record_params).tap do |record|
Log.create(...)
end
end
end
显示时调用关系的代码:
record = Record.last #returns last Record created
record.logs #returns logs for record