我通过has_one有两个相关的模型,如下所示:
class Asset
has_one :device
class Device
belongs_to :asset
我有一个这样的资产ActiveRecord_Relation:
assets = Asset.all
我需要为每个资产更新每个设备中的字段。我不想为每个关联设备创建一个数组,因为它效率很低。我已经尝试过类似的事情:
assets.joins(:device).update_all( {:device=>{:my_field=>6} )
答案 0 :(得分:1)
您可以使用SQL:
assets.joins(:device).update_all(["devices.my_field=?", 6])
或者该字段是否取决于其他字段:
assets.joins(:device).update_all("devices.my_field=assets.other_field")
答案 1 :(得分:0)
解决方案是这样的:
---
users:
- username: user1
comment: "User 1"
group: admin
password: "sha password"
keys:
active:
- "ssh-rsa etc"
admin: yes
- username: user2
comment: "User 2"
group: users
groups: deployer
keys:
active:
- "ssh-rsa etc"
hosts:
user:
- host1
- host2
deployer:
- host3
这使用单个数据库查询来更新所有关联设备与资产之间的关系。