Rails has_many/belong_to 协会
Rails has_many/belong_to Associations
与 has_many
belongs_to
或任何关联:
- 两个模型中先创建哪个对象有关系吗?
- 是否有关于应该先创建哪个的约定?
你说的是一对多关系。
Parent has_many Children
和 Child belongs_to Parent
关系是在创建表后在模型中建立的。因此,创建实际表格的顺序并不重要。
我通常会先创建两者中更受控制的,例如创建用户,然后再创建任何关系。但同样,没有任何理由要求创建它们。
不,先创建哪个并不重要,因为Rails会为您解决正确的顺序。
在 belongs_to / has_one 关联的情况下
class Parent < ActiveRecord::Base
has_many :children
end
class Children < ActiveRecord::Base
belongs_to :parent
end
p = Parent.new(name: 'Jhon')
p.children << Children.new
p.save
(0.3ms) BEGIN
SQL (27.1ms) INSERT INTO `parents` (`name`) VALUES ('Jhon')
SQL (23.1ms) INSERT INTO `childrens` (`parent_id`) VALUES (7842)
(95.0ms) COMMIT
与 has_many
belongs_to
或任何关联:
- 两个模型中先创建哪个对象有关系吗?
- 是否有关于应该先创建哪个的约定?
你说的是一对多关系。
Parent has_many Children
和 Child belongs_to Parent
关系是在创建表后在模型中建立的。因此,创建实际表格的顺序并不重要。
我通常会先创建两者中更受控制的,例如创建用户,然后再创建任何关系。但同样,没有任何理由要求创建它们。
不,先创建哪个并不重要,因为Rails会为您解决正确的顺序。
在 belongs_to / has_one 关联的情况下
class Parent < ActiveRecord::Base
has_many :children
end
class Children < ActiveRecord::Base
belongs_to :parent
end
p = Parent.new(name: 'Jhon')
p.children << Children.new
p.save
(0.3ms) BEGIN
SQL (27.1ms) INSERT INTO `parents` (`name`) VALUES ('Jhon')
SQL (23.1ms) INSERT INTO `childrens` (`parent_id`) VALUES (7842)
(95.0ms) COMMIT