是否有更简洁的写作方式:
> 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
位置,如果相关的话。
答案 0 :(得分:2)
对于has_one
关联,您可以使用create_association
,因此对您而言,这应该有效:
Entity.create(name: 'foo').create_location(address: 'New York, NY')
Rails Guide on assocations包含自动添加的这些方法的列表。
我可能仍然会使用另一个答案,因为这样可以更容易地通过表单等创建嵌套位置。
答案 1 :(得分:1)
我可能错了,因为我从未通过命令行尝试过,但我认为没有理由你添加
accepts_nested_attributes_for :location
到实体
你无法做到:
Entity.create(name: 'foo', location_attributes: {address: 'New York, NY'})