使用模型的委托字段进行 Rails 查询

Raj*_*oit 9 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2 rails-activerecord

您好,我有两个具有 has_one 关联的模型。我需要使用委托字段进行搜索。

**Model 1:**
class Reservation < ActiveRecord::Base
    belongs_to :content
    delegate :type, :title, :to => :content
end

**Model 2:**
class Content < ActiveRecord::Base
    has_one :reservation
end
Run Code Online (Sandbox Code Playgroud)

由于委托,以下查询工作正常:

reservations = Reservation.last
reservations.title
 ~   Content Load (0.6ms)  SELECT `contents`.* FROM `contents` WHERE `contents`.`id` = 95 LIMIT 1
 => "Birthday Party" 
Run Code Online (Sandbox Code Playgroud)

现在我需要使用委托字段进行查询:

reservations = Reservation.where("title = ?","some_title")
Run Code Online (Sandbox Code Playgroud)

它返回错误:

Unknown column 'title' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我这样做的方式正确吗?感谢您阅读我的问题。

Siv*_*iva 4

问题可以通过使用joins和来解决where。但不确定这是否是您正在寻找的。

reservations = Reservation.joins(:content).where("contents.title = ?","some_title")
Run Code Online (Sandbox Code Playgroud)