3

私は関係をたどる必要があります:

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

次に、次の表があります。

create_table :courses_users, :force => true, :id => false do |t|
  t.integer :user_id
  t.integer :course_id
  t.integer :middle_value
end

多対多レコードの中間値にアクセス (編集/更新) するにはどうすればよいですか?

4

2 に答える 2

4

HABTM は、リレーションを格納するためだけに使用する必要があります。リレーションに保存したいフィールドがある場合は、別のモデルを作成する必要があります。CourseSignup. 次に、このモデルを使用してhas_many :through => :course_signupsリレーションを作成すると、モデルは次のようになります。

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

middle_value次に、CourseSignupモデルにを追加できます。

詳細については、ActiveRecord 関連付けのガイドを参照してください。

于 2012-12-12T15:45:16.387 に答える
1

has_many :thoughHABTM ではなく、が必要です。

HABTM には結合モデルがありませんが、にhas_many :throughはあります。何かのようなもの:

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
于 2012-12-12T15:40:12.833 に答える