The original code didn't work because Barney was generating an ActiveRecord
Relation.  The .find almost worked, except he wanted to embed Ruby code in a
SQL statement.  This should do it:

PeopleSkill.where("people_id = #{@person.id}").find


In the future, I think something like Andrew's suggestion would be a lot
more readable and maintainable--I.E. using ActiveRecord to convert your
database information into objects, and looking for your information among
the objects instead of at the database level.


On Tue, Jul 19, 2011 at 5:17 PM, Andrew Skegg <andrewsk...@me.com> wrote:

> Barney <bsperlin@...> writes:
>
> >
> > Thanks Andrew, but I couldn't make the 'find' work on the
> > 'PeopleSkill.where...' line.  When I used 'find' on the @people_skill
> > line it came very close (since in the controller, listed above,
> > people_skill was already choosing the field 'skill'), so when I used:
> >  <%= @people_skill.find(@person.id)
> > and skipped the next line listed above, the SQLException was
> > SQLite3::SQLException: near ".": syntax error: SELECT  skill FROM
> > "people_skills" WHERE "people_skills"."id" = 23 AND (:people_id =
> > @person.id) LIMIT 1
> > which is VERY close to what I want, except that I want
> > "people_skills"."people_id"=23, not "people_skill"."id"=23.  I know
> > that 'find' always looks for the 'id' so I've got to get a different
> > variation.
> > What changes should I make?
> >      Thanks again,
> >             Barney
>
> What if we flip the logic?
>
> Assuming your models look something like:
>
> Person < ActiveRecord::Base
>  has_and_belongs_to_many :skills
> end
>
> Skill < ActiveRecord::Base
>  has_and_belongs_to_many :people
> end
>
> With the appropriate PeopleSkills join table in the database.
>
> Then:
>
> @person = Person.find(params[:id])
> @people_skill = @person.skills
>
> Or more easily:
>
> def show
>    @person = Person.find(params[:id])
> end
>
> and the view becomes:
>
> <p>
>  <b>Skills</b>
>  <%= @people.skills >
> </p>
>
> or similar.
>
>
>
>
>
> --
> 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-talk@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.
>
>

-- 
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-talk@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.

Reply via email to