No, that was wrong, it returns an array, so I had to add .first : @i = Work.find_by_sql( "SELECT inv FROM samples_development.works WHERE worknbr REGEXP '" + @sample['work_number'] + "';" ) @sample.inv = @i.first['inv']
On Apr 1, 3:30 pm, ES <emsto...@gmail.com> wrote: > Ok, thanks! So would this be the way to do it? > > @i = Work.find_by_sql( "SELECT inv FROM samples_development.works > WHERE worknbr REGEXP '" + @sample['work_number'] + "';" ) > @sample.inv = @i['inv'] > > I keep getting "can't convert String into Integer" > > On Apr 1, 3:07 pm, Frederick Cheung <frederick.che...@gmail.com> > wrote: > > > On Apr 1, 2:00 pm, ES <emsto...@gmail.com> wrote: > > > > I want to use a value entered in by a user in an object's form to look > > > up another value in a reference table and assign that value to the > > > corresponding attribute in the object. How do I do that? > > > > Right now I have in my controller create method: > > > > if @number = Work.find_by_sql( "SELECT inv FROM > > > samples_development.works WHERE worknbr REGEXP '" + > > > @sample['work_number'] + "';" ) > > > find_by_sql always returns an array of instances of the corresponding > > class (Work in this case) no matter what the select clause is. The > > columns in the result set are all there as attributes though > > > Fred > > > > @sample.inv = �...@number > > > end > > > > But it assigns something odd to the number attribute that looks like > > > this: > > > > !ruby/object:Work attributes: inv: INV 1986/MR 690/2201 > > > attributes_cache: {} - > > > > Should I be doing this in the model instead? > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.