How can I create new records with has_many :through and honor :conditions?

前端 未结 1 910
情深已故
情深已故 2020-12-30 08:53

Let\'s say I have a Course in which Students can enroll via a Membership (e.g. a has_and_belongs_to_many relationsip of Courses and Students). Some memberships are for stud

相关标签:
1条回答
  • 2020-12-30 09:42

    I believe that you have encountered a Rails bug. I tried the same thing on my box (2.3.4) and it gives me the same error which doesn't seem right at all. Additionally I also tried the work around of:

    course = Course.first
    course.observers << Student.create(:name => "Joe Student")
    course.save
    

    But this creates a membership with the observer field set to false!

    The final ugly workaround I came up with was creating the Membershiprecord manually:

    Membership.create!(:course => Course.first, :student => Student.first, :observer => true)
    

    I've created a ticket for this and I'll be investigating further after breakfast.

    EDIT: I have, as promised, investigated further and found if you change your :conditions Hash to an Array such as:

    :conditions => ["memberships.observer = ?", true]
    

    It works as intended. I also have a github repository with example code and instructions to duplicate.

    0 讨论(0)
提交回复
热议问题