gpt4 book ai didi

ruby-on-rails - 用于模型中动态自定义字段的 Rails gem/插件

转载 作者:行者123 更新时间:2023-12-04 06:43:53 24 4
gpt4 key购买 nike

是否有任何用于 ruby​​ on rails 的 gem/插件可以定义 运行时模型中的自定义字段,无需为每个不同的字段更改模型本身 .
我正在寻找类似 Redmine 的东西 acts_as_customizable插件被打包成一个可以在 rails 中使用的 gem,即

gem 'gemname'
rails g something
rails db:migrate

class Model < ActiveRecord::Base
acts_as_something
end
这是 CustomFieldCustomValue Redmine 中使用的类。
编辑:
由于我的问题不清楚,我添加了一个简短的用例来更好地解释我的需求:

I want users to be able to design their own forms, and collect datasubmitted on those forms. An important decision is the design of howthese custom dynamic records are stored and accessed.


取自 here ,在这篇文章中用不同的想法来解决这个问题,但它们都有缺点。出于这个原因,我问这个问题是否已经在一些 gem 中得到解决,而无需重新考虑整个问题。

最佳答案

恐怕在 ActiveRecoand(通常在标准关系数据库中)中执行此操作可能会非常棘手和复杂。看看http://mongoid.org/docs/documents/dynamic.html - 此机制使用 nosql 功能。

您也可以尝试以下技巧:

1/使用数据库列中的自定义字段序列化哈希,例如 { :foo => 'bar', :fiz => 'biz' }
2/从数据库加载一条记录后,做一些元编程并在记录的单例类上定义相应的方法,例如(假设自定义字段在 custom_fields 列中存储和序列化):

after_initialize :define_custom_methods
# ..or other the most convinient callback

def define_custom_methods
# this trick will open record's singleton class
singleton_class = (class << self; self; end)
# iterate through custom values and define dynamic methods
custom_fields.each_with_key do |key, value|
singleton_class.send(:define_method, key) do
value
end
end
end

关于ruby-on-rails - 用于模型中动态自定义字段的 Rails gem/插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10144504/

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