2014-07-25 64 views
0

有沒有寫這個的更簡潔的方式:在一個聲明中創建兩個型號的紀錄

> e = Entity.create(name: 'foo') 
#<Entity id: 1, name: "foo", created_at: "2014-07-25 13:57:08", updated_at: "2014-07-25 13:57:08"> 

> l = Location.create(address: 'New York, NY') 
#<Location id: 1, address: "New York, NY", created_at: "2014-07-25 13:57:08", updated_at: "2014-07-25 13:57:08"> 

> e.location = l 
> e.save 

這不起作用:

> Entity.create(name: 'foo').location.create(address: 'New York, NY') 

實體has_one位置,如果是相關。

回答

2

對於has_one關聯,您可以使用create_association,因此對於您的用戶應該有效:

Entity.create(name: 'foo').create_location(address: 'New York, NY') 

Rails Guide on assocations具有自動添加的這些方法的列表。

雖然我可能仍會使用其他答案,因爲這樣可以更容易地通過表單創建嵌套位置等。

1

,因爲我從來沒有通過命令行嘗試,但我看不出有任何理由,如果添加

accepts_nested_attributes_for :location到實體

,你不能再做我可能是錯的:

Entity.create(name: 'foo', location_attributes: {address: 'New York, NY'}) 
相關問題