是否可以将非数据库主数据(例如
config/master_data/something.yml
中的数据)视为Rails模型(如Active Record)?
我想要具有一些功能,例如获取与指定 id 匹配的项目(就像它是一条记录一样)或检索所有记录的名称列表。我预计从不同的地方访问这些数据,比如控制器和视图。这是 yml 数据的示例:
items:
- id: 1
name: "Item1"
description: "Description for Item1"
- id: 2
name: "Item2"
description: "Description for Item2"
是的,您可以使用普通旧 Ruby 对象 (PORO) 来模拟行为。您需要创建一个复制 ActiveRecord 行为的类。
例如你可以这样做:
class Item
attr_accessor :id, :name, :description
def initialize(attributes = {})
@yml = YAML.load_file(Rails.root.join('config', 'master_data', 'something.yml'))
@id = attributes['id']
@name = attributes['name']
@description = attributes['description']
end
def self.find(id)
data = @yml['items'].find { |item| item['id'] == id }
new(data) if data
end
end
之后您可以像这样访问它:
item = Item.find(1)
问题是为什么你不想将这些数据存储到数据库中?使用DB和ActiveRecord更容易维护和处理。