新手问题 Rails 中两表通过第三张表关联,如何操作第三张表的额外属性?

zhufengxiangxyz · 2015年09月13日 · 最后由 gzrain 回复于 2015年09月15日 · 1999 次阅读

比如 Users 表和 Roles 表通过中间表 user_role 关联,user_role 表中除了 user_id, role_id 还有一个 boolean 字段 flag,请问这个 flag 字段如何操作?

u = User.new(name:"hello")
u.roles.build(name:"admin") #在这边user和role关联的时候有方法能同时将对应的user_role中的flag设值吗?

刚刚试了 u.user_roles(user:u1, role:r1, flag:true) 这样倒是可以,但还是想知道上面那种方式有方法可以解决吗?

假如你只是在 user 和 role model 里面用 has_and_belongs_to_many,这个 join table 里面的 extra attrs 是不能被 AR 访问的。

你的情况应该是要建一个 UserRole model,然后 在 User 或者 Role 里面用 :has_many xxx, :through => :users_years

需要 登录 后方可回复, 如果你还没有账号请 注册新账号