Ruby on rails使用join和condition语句查询

时间:2011-06-30 20:47:08

标签: ruby-on-rails

我需要在不使用主键(id)的情况下查询连接表。

class User < ActiveRecord::Base
  has_one :participant
end

class Participant < ActiveRecord::Base
  belongs_to :user
end

用户拥有'id'和'name'。 参与者拥有'user_id',即User.id

我试图通过查询User.name

找到Participant.id

我试过的是,

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

2 个答案:

答案 0 :(得分:3)

如果您只是在寻找特定用户的参与者ID,您可以去:

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

由于您的用户与参与者(属于它 - 所以基本上是一对一)具有has_one关系,因此您可以直接呼叫参与者。 ActiveRecord为您处理连接魔法

答案 1 :(得分:0)

尝试以下方法:

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

如果您正在接受用户输入,那么您可能希望修复连接,以便使用sanitize_sql_array。有关查询的好处,请参阅here