我有一个多对多:通过一组类之间的关系,如下所示:
class Company
has_many :shares
has_many :users, :through => :shares, :uniq => true
end
class User
has_many :shares
has_many :companys, :through => :shares, uniq => true
end
class Share
belongs_to :company
belongs_to :user
end
我想确保一种独特的关系,以便用户只能在任何一家公司拥有一份股份,这是我尝试使用“uniq”参数实现的目标。
起初我认为这是可行的,但是似乎“uniq”的行为是过滤记录的SELECT,而不是预先插入,所以我仍然在数据库中得到重复的记录,如果我想这会成为一个问题直接开始处理 :shares 关联,因为调用 user.shares 将返回重复记录(如果存在)。
任何人都可以提供一种可以强制建立真正独特关系的方法吗?这样如果我尝试在用户和公司之间添加第二个关系,它会拒绝它并只保留原始关系?