Having a brain fart on on this one, maybe someone can set me straight
i have a model that can be requested by and assigned to a user so i
have an ‘assigned_to_id’ column and a ‘requested_by_id’ column. Now
originally i had setup the models as:
class Thing < ActiveRecord::Base
belongs_to :requester, :class_name => “User”, :foreign_key =>
“requested_by_id”
belongs_to :assignee, :class_name => “User”, :foreign_key =>
“assigned_to_id”
…
end
class User < ActiveRecord::Base
has_many :requested_things, :class_name => “Thing”, :foreign_key =>
“requested_by_id”
has_many :assigned_things, :class_name => “Thing”, :foreign_key =>
“assigned_to_id”
end
class User < ActiveRecord::Base
has_many :things do
def requested
find(:all, :conditions => ‘requested_by_id = #{id}’
end
def assigned
find:all, :conditions => ‘assigned_to_id = #{id}’
end
end
but attempting to do
@user.things.requested results in:
SELECT * FROM things WHERE (things.user_id = 1 AND (assigned_to_id =
#{id}))
where i want
SELECT * FROM pick_requests WHERE (things.assigned_to_id = 1)
so is there a way to do what i am trying to do or should i just stick
with the first attempt?
Hello Chris,
Having a brain fart on on this one, maybe someone can set me
straight
i have a model that can be requested by and assigned to a
user so i have an ‘assigned_to_id’ column and a ‘requested_by_id’
column. Now originally i had setup the models as:
[…]
class User < ActiveRecord::Base
has_many :things do
def requested
find(:all, :conditions => ‘requested_by_id = #{id}’
There’s a missing parenthesis. Paste error, I’m guessing.
SELECT * FROM things WHERE (things.user_id = 1 AND (assigned_to_id = #{id}))
Are you sure ?
Doesn’t it generate :
SELECT * FROM things WHERE (things.user_id = 1 AND (requested_by_id =
#{id}))
where i want
SELECT * FROM pick_requests WHERE (things.assigned_to_id = 1)
Are sure this SQL statement is correct ?
so is there a way to do what i am trying to do or should i just stick
with the first attempt?
It’s not clear to me what you attempt to do, what is pick_requests ?
where does it come from ?
– Jean-François.
–
Ã? la renverse.
good catches on the typos. i was trying to be a bit abstract and
missed a couple of things
On 10/26/06, Jean-François [email protected] wrote:
has_many :things do
def requested
find(:all, :conditions => ‘requested_by_id = #{id}’
There’s a missing parenthesis. Paste error, I’m guessing.
yes, bad paste.
SELECT * FROM things WHERE (things.user_id = 1 AND (assigned_to_id = #{id}))
Are you sure ?
Doesn’t it generate :
SELECT * FROM things WHERE (things.user_id = 1 AND (requested_by_id = #{id}))
another bad paste, you are correct.
where i want
SELECT * FROM pick_requests WHERE (things.assigned_to_id = 1)
Are sure this SQL statement is correct ?
another bad paste, should be
SELECT * FROM things WHERE (things.assigned_to_id = 1)