2013-10-04 49 views
3

我想過濾API控制器中的嵌套關​​聯,然後重新分配過濾的關聯,只是過濾後的關聯將從API返回。爲Activerecord模型分配關聯而不自動保存

class Parent < ActiveRecord::Base 
    has_many :children 
end 

class Child < ActiveRecord::Base 
    belongs_to :parent 
end 

parent = Parent.find(1) 
most_loved_children = [] 
# do some filtering 
parent.children = most_loved_children # triggers save on each of the children 

parent.to_json # should only return parent with most_loved_children 

有沒有辦法「停用」隱式保存/更新?

回答

2

如果您most_loved_children可以收集組屬性哈希的,那麼你可以使用」

parent.children.build(most_loved_children) 

,不會做一個直接的節省。

+0

啊,但'parent.to_json'仍返回舊屬性 – schickling

+0

@schickling你需要在你的問題陳述中規定這個要求,'to_json'方法顯然是從保存的數據中提取的,而不是活動記錄中未保存的數據,如果是這樣的話,那麼你的問題可能在於'to_json'未保存的數據,沒有找到一種方式來分配關聯而不保存它(因爲這已經已知如何做)。 – lurker

+0

我爲此打開了一個新問題:http://stackoverflow.com/questions/19195605/return-filtered-association-with-grape – schickling