开发者

Ruby on rails querying with join and condition statement

开发者 https://www.devze.com 2023-03-17 01:08 出处:网络
I need to query joining tables without using the primary key(id). class User < ActiveRecord::Base has_one :participant

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

精彩评论

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