Sql 为了创建而伪造ActiveRecord::Base后代属性有很多关联
故事是这样的: 我试图将Deal和Task与许多关联联系在一起,但问题是它们仅通过第三个表TasksTask中的字段关联,其中Deal的id隐藏在序列化php数组中,因此我可以根据Deal的id获得这样的值,如下所示:Sql 为了创建而伪造ActiveRecord::Base后代属性有很多关联,sql,ruby-on-rails,ruby,activerecord,Sql,Ruby On Rails,Ruby,Activerecord,故事是这样的: 我试图将Deal和Task与许多关联联系在一起,但问题是它们仅通过第三个表TasksTask中的字段关联,其中Deal的id隐藏在序列化php数组中,因此我可以根据Deal的id获得这样的值,如下所示: PHP.serialize["D_#{Deal.instance.id}"] 虽然Task和TasksTask通过外键相互关联,但外键是一个精细简单的整数 现在我用Task.where(blabla)的自定义方法抓取任务,但由于我没有关联,我不能在批抓取的“includes”方
PHP.serialize["D_#{Deal.instance.id}"]
虽然Task和TasksTask通过外键相互关联,但外键是一个精细简单的整数
现在我用Task.where(blabla)的自定义方法抓取任务,但由于我没有关联,我不能在批抓取的“includes”方法中使用它,而且我收到了很多飞行请求,这很令人伤心
我已经尝试过finder_sql param,尝试过lambdas和procs,但出于某些原因,它们不起作用(如果我将其传递给“条件”,则在尝试将deal_id用作外键时,结果是“where…”和[lambda condition]”,而我在交易中没有外键)
我也在考虑把这个奇怪的领域作为交易的一个属性
与:
还尝试了元编程的魔力,但ActiveRecord已经大量使用了它,简单的Response_to和method_missing根本没有帮助,除了在Deal的实例上调用as accessor方法时给我这个疯狂的值
我正在做所有这些奇怪的事情,因为我试图在另一个系统之上构建一个系统,这个系统没有普通的api,但使用了很多,现在看来这是不可避免的。这也是可悲的
所以问题是,我可以以某种方式伪造它,或者我需要为交易创建第四个带有普通外键的表,并以某种方式同步它(cron,如果我的老板或sql触发器可以的话)
如有任何建议,将不胜感激。:-) 虽然这里没有任何活动,但我的解决方案是在联接表中添加一个字段,并通过关联构建一个has\u many,并基于该值的非序列化定期更新该字段
attr_accessor :STRANGE_FIELD_NAME
def after_initialize
@STRANGE_FIELD = PHP.serialize["D_#{self.id}"]
end