Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为了创建而伪造ActiveRecord::Base后代属性有很多关联_Sql_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Sql 为了创建而伪造ActiveRecord::Base后代属性有很多关联

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”方

故事是这样的: 我试图将Deal和Task与许多关联联系在一起,但问题是它们仅通过第三个表TasksTask中的字段关联,其中Deal的id隐藏在序列化php数组中,因此我可以根据Deal的id获得这样的值,如下所示:

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