Rails查询模型的代表字段

问题描述:

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

**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 

下面的查询工作正常,因为委托:

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

现在我需要使用代理领域做查询:

reservations = Reservation.where("title = ?","some_title") 

返回错误:

Unknown column 'title' in 'where clause' 

我如何解决这个问题?我正在以正确的方式行事吗?感谢您阅读我的问题。

问题可以通过使用joinswhere来解决。但不知道这是你在找什么。

reservations = Reservation.joins(:content).where("contents.title = ?","some_title") 
+0

该查询的工作方式是将“content.title”更改为“title” –

+0

它将起作用。但是,将表名称作为前缀是一种很好的做法,因为如果保留也具有相同的列,则会发生冲突。 – shiva

+0

当我使用表名作为前缀其抛出此错误︰Mysql :: Error:Unknown column'content.title' –