Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Ruby on rails 包括关联对象而不重新加载当前实例_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 包括关联对象而不重新加载当前实例

Ruby on rails 包括关联对象而不重新加载当前实例,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正试图找到一种方法,将关联对象加载到当前的user实例中 我有一个user的实例,我想把它传递给一个业务服务。但此服务需要包含关联对象才能快速运行 user = User.find() user.email = new_email SomeService(user) class SomeService def initialize(user) user = User.includes(:coupons, :rentals, :rental_demands).find(user

我正试图找到一种方法,将关联对象加载到当前的user实例中

我有一个
user
的实例,我想把它传递给一个业务服务。但此服务需要包含关联对象才能快速运行

user = User.find()
user.email = new_email
SomeService(user)

class SomeService
   def initialize(user)
     user = User.includes(:coupons, :rentals, :rental_demands).find(user.id)
   end
end
执行此操作将重置对用户实例所做的任何更改

有没有什么方法可以做到:

user.includes(:rental_demands)
我试过:

ActiveRecord::Associations::Preloader.new.preload(user, :rental_demands)

但这似乎是最糟糕的

ActiveRecord::Associations::preload
是正确且唯一的方法。
ActiveRecord::Associations::preload
并没有加载范围对象,它调用每个
rental\u requires
而不是使用用户进行过滤。在Rails 5中,我只查看
SELECT“reports.”之类的查询其中“reports”。“member_id”=11
调用
时。在
member
实例上预加载id为11的