KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
on a Ruby on Rails project I'm trying to access association objects on an ActiveRecord prior to saving everything to the database. class Purchase < ActiveRecord::Base has_many :purchase_items, dependent: :destroy has_many :items, through: :purchase_items validate :item_validation def item_ids=(ids) ids.each do |item_id| purchase_items.build(item_id: item_id) end end private def item_validation items.each do |item| ## Lookup something with the item if item.check_something errors.add :base, "Error message" end end end end If I build out my object like so: purchase = Purchase.new(item_ids: [1, 2, 3]) and try to save it the item_validation method doesn't have the items collection populated yet, so even though items have been set set it doesn't get a chance to call the check_something method on any of them. Is it possible to access the items collection before my purchase model and association models are persisted so that I can run validations against them? If I change my item_validation method to be: def item_validation purchase_items.each do |purchase_item| item = purchase_item.item ## Lookup something with the item if item.something errors.add :base, "Error message" end end end it seems to work the way I want it to, however I find it hard to believe that there is no way to directly access the items collection with rails prior to my purchase and associated records being saved to the database.
Tags (comma-separated)
Save Edits
Cancel