Displaying records with static look up table source...

40 views
Skip to first unread message

Elizabeth McGurty

unread,
May 18, 2015, 12:21:54 PM5/18/15
to rubyonra...@googlegroups.com
Greetings All,

I hope you all understand what I am writing here.  Lots of views involve displaying date from static 'look up' tables: states, countries, type...

From all of the documentation I have read, the standard code conduct seems @look_up_object = LookUpModel.find .where. conditions => ids match

I pursued that structure, and for long listings, so many calls to database really bothered me.

So I re-wrote the code on look-up for my case static item_conditions, containing only two field: conditions and item_conditions_id:

In the view I now have, following  found parent records:

        <% @icond = Itemconditions.find(:all, :readonly) %>
        <% @ih = Hash.new %>
        <% @ih2 = Hash.new %>
        <% @ih = @icond.to_a.map(&:serializable_hash) %>
        <% for kv in @ih %>
          <% @ih2[kv.fetch("item_conditions_id")]  = kv.fetch("conditions") %>
         <% end %>

And then later for iterative record output I have in the view, ldr as the parent data source

    <label class="item_listing">Condition:&nbsp;<%= @ih2[ldr.item_condition_id.to_s] %></label>

Benchmarked this and vastly faster. Deployed it, no problems/errors.  I have researched Ruby and Ruby on Rails API.  I have not found a simpler, more native approach.  Masters if you are aware of Ruby on Rails way, please let me know.

Thanks,

Liz McGurty











 

Elizabeth McGurty

unread,
May 18, 2015, 12:23:03 PM5/18/15
to rubyonra...@googlegroups.com
displaying data

thiagocifani

unread,
May 18, 2015, 1:35:28 PM5/18/15
to rubyonra...@googlegroups.com
I would recommend you to remove this code in your view to a presenter and use AR include method to add a your relationships in the same query to fetch from the database. It will avoid de n+1 issue.

--
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-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/daef460b-110c-4362-a2df-ef8e43aedf6c%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--

Elizabeth McGurty

unread,
May 19, 2015, 2:59:11 PM5/19/15
to rubyonra...@googlegroups.com
Thank you, Thiagocifani!  I was not aware of the include method.  And, by the way, I visited your about.me page and it is very impressive.
Liz

Reply all
Reply to author
Forward
Message has been deleted
0 new messages