澄清..您创建模型之间的关联和表之间的关系。要创建一对一的关联,您可以分别设置has_one
:name_of_the_child_model
、 或belongs_to
:name_of_the_parent_model
。在您的示例中:
class Office < ActiveRecord::Base
attr_accessible :name, :city
has_one :state
end
类状态 < ActiveRecord::Base
attr_accessible :name, :abbrv
belongs_to :office
end
之后,您创建相应表之间的关系。您可以通过将父表(Office 模型)的主键设置为子表(State 模型)中的新字段/列来做到这一点,因此 State 模型如下所示:
类状态 < ActiveRecord::Base
attr_accessible :name, :abbrv, :office_id
belongs_to :office
end
要一步实例化并在 Office 对象上保存一个新的 State 对象,您可以使用.create_modelname(attributes={})
方法:
office = Office.find(id)
office.create_state({name: "state_name", abbr: "abbrv"})
.
你得到了nil
因为State.first
只是试图从你之前没有写入的状态表中读取第一个对象。