开发者

Ruby on rails querying with join and condition statement

I need to query joining tables without using the primary key(id).

class User < ActiveRecord::Base
  has_one :participant
end

class Par开发者_JAVA技巧ticipant < ActiveRecord::Base
  belongs_to :user
end

The User has 'id' and 'name'. The Participant has 'user_id' which is User.id

I am trying to find the Participant.id by querying with User.name

What I have tried is,

participant_id = Participant.all :joins => :users, :conditions => {:name => "Susie"}


If you're just looking for a specific user's participant id, you could just go:

User.find_by_name("Susie").participant.id

Since your user has a has_one relation to Participant(which belongs to it -- so basically a one-to-one) you can just go call participant on user. ActiveRecord takes care of the join magicks for you


Try the following:

class User < ActiveRecord::Base
  has_one :participant
end

class Participant < ActiveRecord::Base
  belongs_to :user

  scope :foo, lambda {|name|
    joins(:users).
    where("name = ?", name)
  }
end

If you're taking user input you're going to want to probably fix joins so it uses sanitize_sql_array. See here also for some query goodness

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜