Ruby on rails 有很多:通过联想问题

Ruby on rails 有很多:通过联想问题,ruby-on-rails,has-many,Ruby On Rails,Has Many,我对ruby有点生疏,我对has\u many有一个很大的问题:通过关联。我的系统目前是用Authlogic和声明性_auth设置的。当我提交一个用户时,它会正确地创建所有内容,除了它不会在用户表中插入角色id之外,即使它显示它在提交时被传递。它也不会将id保存在分配表中。首先,我想问题是,在users表中是否需要role_id?其次,分配表中的user_id和role_id字段是否需要声明为外键,还是rails会自动处理?我非常感谢你在这方面的帮助 class User < Active

我对ruby有点生疏,我对has\u many有一个很大的问题:通过关联。我的系统目前是用Authlogic和声明性_auth设置的。当我提交一个用户时,它会正确地创建所有内容,除了它不会在用户表中插入角色id之外,即使它显示它在提交时被传递。它也不会将id保存在分配表中。首先,我想问题是,在users表中是否需要role_id?其次,分配表中的user_id和role_id字段是否需要声明为外键,还是rails会自动处理?我非常感谢你在这方面的帮助

class User < ActiveRecord::Base
  acts_as_authentic
  has_many :assignments
  has_many :roles, :through => :assignments

  def role_symbols
    roles.map do |role|
      role.name.underscore.to_sym
    end
  end
end

class Role < ActiveRecord::Base
  has_many :assignments
  has_many :users, :through => :assignments
end

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end
class用户:分配
定义角色符号
roles.map do | role|
role.name.下划线.to_sym
结束
结束
结束
类角色:分配
结束
类赋值
用户表中是否需要角色id

否,role_id列应仅位于assignments表中。在这种情况下,用户表根本不会更新,只会更新分配。可能应该使用给定的角色id和用户id创建新的分配

是否在中设置用户id和角色id字段 分配表需要重新设置 声明为外键或 rails会自动处理这个问题吗

Rails不需要DB级别约束。Rails处理关联只需要关联声明本身以及相应表中相应id列的存在

是一个很好的介绍有很多:通过