直到Rails 4.1,可以在将更改提交到数据库之前启动事务,创建两条记录并引用它们。
记录处于多对多关系中,两端存在约束,即不能有空组,也不能属于至少一个组。
班级大纲:
class Person
has_and_belongs_to_many :groups
validates_presence_of :groups
end
class Group
has_and_belongs_to_many :persons
validates_presence_of :persons
end
交易代码示例:
Person.transaction do
person = Person.new(...)
group = Group.create!(..., persons: [person])
person.groups << group
person.save!
end
有没有办法将存在检查推迟到提交阶段?还有更好的建议吗?
答案 0 :(得分:1)
只需使用inverse_of
即可。这应该可以解决你的问题:
class Person
has_and_belongs_to_many :groups, inverse_of: :groups
...
end
class Group
has_and_belongs_to_many :persons, inverse_of: :persons
..
end