gpt4 book ai didi

ruby-on-rails - ActiveRecord::Store 的字段名取自另一个表

转载 作者:行者123 更新时间:2023-12-01 03:07:44 24 4
gpt4 key购买 nike

假设我在 HR 系统中有两个模型,Person 和 Field。我想允许系统用户通过为其创建一个字段来向 Person 模型添加自定义属性。所以我的 Person 模型将包含一条类似的行

class Person < ActiveRecord::Base
store :fields, accessors: Field.all.pluck(:name), coder: JSON
end

然而,这不起作用,因为该类被缓存,因此不会添加新字段。通常我会考虑使用 Proc 或 lambda,但这在这里不起作用。
是否有不依赖于添加 gem 的简单解决方案?我可以在不使用 ActiveRecord Store 和序列化列的情况下做到这一点,但我保留了进行验证和跟踪属性更改的能力吗?

最佳答案

尝试这个

class Person < ActiveRecord::Base
store :fields, coder: JSON

after_initialize :add_accessors_for_field_names

def add_accessors_for_field_names
field_names.each do |field_name|
singleton_class.class_eval do
store_accessor :fields, field_name
end
end
end

def field_names
Field.all.pluck(:name)
end
end

关于ruby-on-rails - ActiveRecord::Store 的字段名取自另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com