如何编写SQL查询,以便Group.where("blob.item.id = ?", self.id)
返回正确的关联?该行给出以下错误:ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "item"
。
SQL是在Item
上的一种方法中编写的,当我调用它时,它就像Item.first.groups
一样:
Class Item
has_many :wanted_trades, class_name: "Trade", foreign_key: :share_id
has_many :shares
def trades
Trade.where("share.item.id = ?", self.id)
end
end
Class Trade
belongs_to :wanted_share, class_name: "Share"
end
Class Share
belongs_to :item
end
如果我做Trade.joins(wanted_share: :item).where("wanted_share.item.id = ?", self.id)
,则得到同样的错误,只是需要更长的SQL查找。
答案 0 :(得分:1)
您是否尝试过使用joins
?据我所知,ActiveRecord
不允许您在where
方法中使用表前缀,因此您要么必须使用joins
:
http://guides.rubyonrails.org/active_record_querying.html#joining-tables
或编写原始sql,这将允许您使用表前缀:
sql = "SELECT * from ..."
records_array = ActiveRecord::Base.connection.execute(sql)