Hi, I need a fresh set of eyes to look at this bit of controller code and tell me why I might be getting an error message: lookup = Profit.find(:all, :conditions => [ "user_id = ? AND product_id = ?", uid, pid]) unless lookup.empty? if (lookup.updated_on > 360.minutes.ago) return end end If lookup is empty, then I get an error message that lookup.updated_ondoesn't exist. I've tried lookup.nil? but lookup gets returned in the form of  so that empty works. But if lookup is empty should not the code inside the statement get ignored? Any suggestions on how I might rework that code? Thanks Steve O. http://www.smarkets.net
on 2005-12-23 01:03
on 2005-12-23 01:42
:all returns an array of objects. :first would retrun the object in question and allow you to do that. I think you want lookup - the first object in the array. On 12/22/05, Steve O. <email@example.com> wrote: > end > Steve O. > http://www.smarkets.net > > _______________________________________________ > Rails mailing list > firstname.lastname@example.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > > -- http://brantinteractive.com email@example.com 4034 skippack pike v. 267.640.2195 f. 215.689.1454
on 2005-12-23 02:46
On 12/22/05, Steve O. <firstname.lastname@example.org> wrote: > end > end > > If lookup is empty, then I get an error message that lookup.updated_on > doesn't exist. I've tried lookup.nil? but lookup gets returned in the form > of  so that empty works. But if lookup is empty should not the code inside > the statement get ignored? > > Any suggestions on how I might rework that code? Profit.find(:all) will return an array. The array will be empty if none of the conditions can be satisified. Later on, you're calling updated_on on the array object, and I don't think that's a valid method for an array object. You probably want to use Profit.find(:first) (or maybe even Profit.find_by_user_id_and_product_id().
on 2005-12-23 04:52
Yep. You guys were both right. I had changed my call from a find_by_user_id to a find(:all) and find all expects there might be more than one in the array. Thanks. Steve