Ruby on Rails Wednesday, October 24, 2018

Hmmm...   That may work...

I would always be accessing assessment.data_entries for any lists or views. Reasons and Consequences are basically select criteria for each data entry.
I would never reference reason.data_entries or consequence.data_entries

a has_many :data_entries, :through: :assessment may work though...  Let me give that a shot...

Now to figure out how to structure it...  :-)

On Wednesday, October 24, 2018 at 7:12:45 AM UTC-4, John Sanderbeck wrote:
I'm working on a project that has the following setup

I have a table called Assessment

for each assessment there can be different reasons and consequences defined for that assessment

then for each assessment the teacher takes multiple data entries over a period of time

each data entry can choose multiple reasons and consequences from the ones defined in the assessment

So you have assessment
has_many :reasons
accepts_nested_attributes_for :reasons
has_many :consequences
accepts_nested_attributes_for :consequences
has_many :data_entries
accepts_nested_attributes_for :data_entries

Then reasons
belongs_to :assessment
has_and_belongs_to_many :data_entries

Then consequences
belongs_to :assessment
has_and_belongs_to_many :data_entries

Finally data_entries
belong to assessment
has_and_belongs_to_many :reasons
has_and_belongs_to_many :consequences

There is also a join table for reasons to data_entries, and consequences to data_entries

The nested table works fine for the reasons, consequences, and the base data_entries

however what I cannot get to work is the reasons and consequences chosen in the data_entries

what appears to be happening in params is that assessment comes back with data_entries_attributes under it
however there is also a data_entry param coming back as well, so it is not part of assessment, so the nest is wrong somehow...

I have this working in other places however this nest is one level deeper than the others...

The way I have the nested form section setup is this...

  <td>
    <div class="multi-column">
      <ul>
        <% @assessment.reasons.each do |reason| -%>
            <ul>
              <%= check_box_tag('data_entry[reason_ids][]', reason.id, @assessment.reason_ids.include?(reason.id), :multiple => true) %>
              <span rel="tooltip" title="<%= reason.assessment_id %>"><%= reason.name %></span>
            </ul>
        <% end %>
      </ul>
    </div>
  </td>
  <td>
    <div class="multi-column">
      <ul>
        <% @assessment.consequences.each do |consequence| -%>
            <ul>
              <%= check_box_tag('data_entry[consequence_ids][]', consequence.id, @assessment.consequence_ids.include?(consequence.id), :multiple => true) %>
              <span rel="tooltip" title="<%= consequence.assessment_id %>"><%= consequence.name %></span>
            </ul>
        <% end %>
      </ul>
    </div>
  </td>


John

--
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/749f9533-d198-4f8a-a2a5-98c6c5368452%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment