Ruby:如何在数据库中保存用户定义的逻辑

ergxz8rk  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(75)

我想在db表中存储ANDOR逻辑和详细信息,我使用activerecord和Postgres。
这是一个简化的示例:
我有一个名为FulfillmentRules的表,其中包含以下字段:

order_element #like product
element_detail #like color
is_equal_to

字符串
用户可以创建一个逻辑语句,如:如果productis_equal_toblue,则执行一些操作..
但是,它们也可以创建此逻辑的附加级别。因此,而不是仅仅一行,然后可以添加逻辑运算符AND / OR
因此,用户生成的逻辑可能如下:如果product****coloris_equal_toblueproduct*sizeis_equal_tolarge**执行操作
我的FulfillmentRules表可以捕获详细信息,但问题是在某种程度上还存储了逻辑。
我怎么能做到这一点?

yduiuuwa

yduiuuwa1#

由于您使用UI中可用的选项限制了过滤逻辑的灵活性,因此我将创建一个名为FilterRule的模型,其中:

class FulfillmentRule < ApplicationRecord
  has_many :filter_rules
end

class FilterRule < ApplicationRecord
  belongs_to :fulfillment_rule
  # has fields called fulfillment_rule_id, filter_attribute, filter_value, filter_logic, chaining_logic
end

字符串
因此FulfillmentRule示例可能具有关联的filter_rule记录

fulfillment_rule_id, filter_attribute, filter_value, filter_logic, chaining_logic
1,                   product_color,    blue,         equal_to,     and
1,                   product_color,    green,        equal_to,     or
1,                   product_size,     large,        equal_to,     and


这是一个小小的DSL,用于您所询问的小示例。不是大型电子商务网站可能使用的那种DSL。

相关问题