Ruby on Rails Tuesday, March 24, 2015

On 24 March 2015 at 18:50, Gm <javaplayer@gmail.com> wrote:
> Hi,
>
> I'm using habtm to create a relationship between two models:
>
> class Question < ActiveRecord::Base
> has_and_belongs_to_many :exams
> end
>
> class Exam < ActiveRecord::Base
> has_and_belongs_to_many :questions
> end
>
> At some point I'm doing this:
>
> class Exam < ActiveRecord::Base
> has_and_belongs_to_many :questions
>
> def generate
> (1..5).each do
> questions.create(Question::SKELETON)
> end
> end
> end
>
> When I do that, a sql inserts a record inside questions_exams table.
> But this table has another column called: 'order' where I need to put some
> data inside
>
> How can I populate the 'order' column inside join table ?
>
> questions_exams
> - question_id
> - exam_id
> - order

Don't use habtm, use has many through
Exam has_many questions_exams
has_many questions through questions_exams

But probably don't call it questions_exams, think of a better name

In fact even when I could use habtm I usually use has many through, I
find it easier to understand. Also it is surprising how often the
requirement for a little something extra in the join table pops up out
of the requirements when least expected.

Colin

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLvAw_Ro2c-xUpz4YFOUspur1YADYsMJUsbnNNk5QJYkRw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment