私はこれでほとんど自分自身を捜してしまいました。私は同じようなものに近づいています。this stack overflow question(一度にいくつかの質問をします)。私には1つしかありません。 [OK]を2つ - しかし、最初のものへの回答を提供することは、以下の要件を遵守している限り、あなたの答えを受け入れます。Rails 3は非標準のキーフィールドと結合します
私は、従来のデータベースで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
これは私がレールコンソールで得るものです:
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]