我可以在一次通话中创建一个has_one关联吗?

时间:2015-06-06 17:18:19

标签: ruby-on-rails

我有一个项目,我用cache_item拆分表格。 CachItem包含一些序列化片段。像这样:

class Item < ActiveRecord::Base
  has_one :cache_item
end

class CacheItem < ActiveRecord::Base
  belongs_to :item
end

我如何告诉它创建一个并自动保存?

我这样做:

if !cache_item
  CacheItem.create! item_id: id
  self.reload # seems like I shouldn't have to do this
end

但好像应该有一个电话。有吗?

对于has_many,我可以这样做:

>item.comments.count
>1
>item.comments.create! # inserts with proper information
>2

has_one的模式是什么?

2 个答案:

答案 0 :(得分:1)

对于您使用has_many Comment的项目:

Item.comments.create()

对于使用has_one Comment的项目:

Item.create_comment

答案 1 :(得分:1)

对于has_one关联,您可以使用create_association!作为记录:http://guides.rubyonrails.org/association_basics.html#has-one-association-reference

在你的情况下

item.create_cached_item!