使用Rails查询模型的代理字段

8

你好,我有两个模型,它们之间有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

以下查询可以正常工作,因为使用了委托(delegate):
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'

我该如何解决问题?我的方法正确吗?谢谢阅读我的问题。

1个回答

4
问题可以通过使用“连接”和“where”来解决。但不确定这是否是您要寻找的内容。
reservations = Reservation.joins(:content).where("contents.title = ?","some_title")

它可以工作。但最好的做法是使用表名作为前缀,因为如果Reservation也有相同的列,就会发生冲突。 - Siva
当我使用表名作为前缀时,它会抛出此错误:Mysql :: Error:未知列'content.title'。 - Raj Adroit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接