2

如何使用json在rails中更新nested_attributes?

class Test < ActiveRecord::Base 
     has_many :samples 
     accepts_nested_attributes_for :samples 
end 

class Sample < ActiveRecord::Base 
    belongs_to :tests 
end 

現在,當我創造新的價值如下

捲曲-H '內容類型:應用程序/ JSON' -H「接受:應用程序/ json' -X POST http://localhost:3000/tests.json -d「{\」test \「:{\」name \「:\」xxxxxx \「, \」samples_attributes \「:[{\」username \「:\」yyyyyyy \「,\」age \「:\」25 \「}]}}」

它創建測試新的價值,它還會在sample表中的條目,但鑑於,會在樣品表中的新條目更新時,它更新測試表。所以我如何才能更新當前條目呢?

請幫幫我。

回答

8

您需要通過id的哈希值更新記錄(view API):

class Member < ActiveRecord::Base 
    has_many :posts 
    accepts_nested_attributes_for :posts 
end 

如果哈希包含了相匹配的已記錄相關的id鍵,匹配的記錄將被修改:

member.attributes = { 
    name: 'Joe', 
    posts_attributes: [ 
    { id: 1, title: '[UPDATED] An, as of yet, undisclosed awesome Ruby documentation browser!' }, 
    { id: 2, title: '[UPDATED] other post' } 
    ] 
} 

對於沒有id鍵的每個散列,新記錄將被實例化。

params = { member: { 
    name: 'joe', posts_attributes: [ 
    { title: 'Kari, the awesome Ruby documentation browser!' }, 
    { title: 'The egalitarian assumption of the modern citizen' } 
    ] 
}} 
+0

是的,你是絕對正確的。我早些時候嘗試過,它工作並忘記發佈答案。反正謝謝你。 – logesh

相關問題