我有很多:通过一组类之间的关系:
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”参数实现的。
起初我认为这是有效的,但似乎行为os“uniq”是过滤记录的SELECT,而不是INSERT之前所以我仍然在数据库中获得重复记录,如果我想直接处理:shares关联,因为调用user.shares会返回重复记录(如果存在)。
任何人都可以帮助一种强制真正建立单一关系的方法吗?所以,如果我尝试在用户和公司之间添加第二种关系,它会拒绝它而只保留原始的?
答案 0 :(得分:0)
您是否尝试将其添加到Share
课程中?
validates_uniqueness_of :user, scope: :company
另外,在User
课程中我认为应该是:
has_many :companies, through: :shares
我希望有所帮助。