首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails HABTM中间值

Rails HABTM中间值
EN

Stack Overflow用户
提问于 2012-12-12 23:36:26
回答 2查看 304关注 0票数 3

我必须遵循以下关系:

代码语言:javascript
复制
class Course < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :courses
end

然后我有下表:

代码语言:javascript
复制
create_table :courses_users, :force => true, :id => false do |t|
  t.integer :user_id
  t.integer :course_id
  t.integer :middle_value
end

如何访问(编辑/更新)多对多记录中的中间值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-12 23:45:16

HABTM应该仅用于存储关系。如果您有任何想要存储在关系中的字段,您应该创建另一个模型,例如。CourseSignup。然后,您将使用此模型创建一个has_many :through => :course_signups关系,因此您的模型将如下所示:

代码语言:javascript
复制
class Course < ActiveRecord::Base
  has_many :course_signups
  has_many :users, :through => :course_signups
end

class CourseSingup < ActiveRecord::Base
  belongs_to :course
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :course_signups
  has_many :courses, :through => :course_signups
end

然后,您可以在CourseSignup模型中添加middle_value

您可以在the guide to ActiveRecord associations中找到更多详细信息。

票数 4
EN

Stack Overflow用户

发布于 2012-12-12 23:40:13

你要的是has_many :though,而不是HABTM。

HABTM没有join模型,但has_many :through有。类似于:

代码语言:javascript
复制
class Course < ActiveRecord::Base
  has_many :enrollments
  has_many :users, :through => :enrollments
end

class Enrollment < ActiveRecord::Base
  belongs_to :course
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :enrollments
  has_many :courses, :through => :enrollments
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13843201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档