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'
我如何解决这个问题?我正在以正确的方式行事吗?感谢您阅读我的问题。
答
问题可以通过使用joins
和where
来解决。但不知道这是你在找什么。
reservations = Reservation.joins(:content).where("contents.title = ?","some_title")
该查询的工作方式是将“content.title”更改为“title” –
它将起作用。但是,将表名称作为前缀是一种很好的做法,因为如果保留也具有相同的列,则会发生冲突。 – shiva
当我使用表名作为前缀其抛出此错误︰Mysql :: Error:Unknown column'content.title' –