【发布时间】:2011-02-04 06:53:15
【问题描述】:
我几乎用谷歌搜索了自己,而我最接近类似的东西是this stack overflow question(它试图一次问几个问题)。我只有一个。好的,两个 - 但只要回答第一个,只要它符合以下要求,您的回答就会被接受。
我正在使用带有旧数据库的 Rails 3 和 Ruby 1.8.7。唯一值得讨论的是 Rails 版本。我被 Ruby 1.8.7 和数据库结构困住了。
以下是所涉及模型的重要部分:
class List < ActiveRecord::Base
set_primary_key "ListID"
has_many :listitem, :foreign_key => "ListID", :dependent => :destroy
has_many :extra_field, :foreign_key => "ListID", :dependent => :destroy
end
class Listitem < ActiveRecord::Base
set_table_name "ListItems"
set_primary_key "ListItemID"
belongs_to :list
has_many :list_item_extra_field, :foreign_key => 'ListItemID', :dependent => :destroy
end
这是我在 rails 控制台中得到的:
irb(main):001:0> List.joins(:listitem).to_sql
=> "SELECT [lists].* FROM [lists] INNER JOIN [ListItems] ON [ListItems].[ListID] IS NULL"
当我期待 sql 语句更像:
SELECT [lists].* FROM [lists] INNER JOIN [ListItems] ON [ListItems].[ListID] = [Lists].[ListID]
让我回答上面的问题会得到正确的答案。如果您能告诉我如何获得相当于以下内容的奖励积分:
SELECT [lists].*, COUNT([ListItems].*) FROM [lists] INNER JOIN [ListItems] ON [ListItems].[ListID] = [Lists].[ListID]
【问题讨论】:
标签: ruby-on-rails