如果我有以下关系:
class Role < ActiveRecord::Base
has_and_belongs_to_many :members, join_table: :members_roles
end
和
class Member < ActiveRecord::Base
has_and_belongs_to_many :roles, join_table: :members_roles
end
我想访问member_roles表 - 我该怎么做?在我的rails控制台中:
m=Member.new
m.member_roles.new
or
r=Role.new
r.member_roles.new
不起作用。基本上我想在新模型对象和角色对象之间建立新关系。我该如何设置?
如果我尝试
m=Member_role.new
我得到名字错误:
NameError: uninitialized constant Member_Role
即使在我的架构中,还有一个members_roles表:
create_table "members_roles", id: false, force: true do |t|
t.integer "member_id"
t.integer "role_id"
end
我知道有一些简单的我想念,但我正在与其他人的代码合作并试图解决它 - 我从未以这种方式建立多对多的关系
答案 0 :(得分:0)
如果您只想访问模型以创建新关联,但联合表上没有额外数据,您只需执行以下操作:
m = Member.create
r = Role.create
m.roles << r
这将自动在联合表中创建一个新行。
但请注意,如果您在联接表上有一些额外数据,则无法将其与habtm
关联一起使用,而应使用has_many :through