我需要在不使用主键(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"}
答案 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