0

2 つのテーブル イベントと割り当てがあります

events                       assignments
=====                        ============
sport_id                     sport_id
home_school_id               school_id
name                         division_id

そして、私はイベントを選択して、次のように割り当てに参加しようとしています:

joins = "LEFT JOIN assignments sa on events.sport_id = sa.sport_id 
         AND events.home_school_id = sa.school_id"
events = Event.find(:all, :joins => joins)

問題は、これが部門 _id を返さないことです。なぜだめですか ?協会がないからですか?

できるはずじゃないのevents.first.division_id?私はmysqlでこれを試しましたが、うまくいきました。

編集

私のイベント モデルの関連付け

has_many :assignments,
  :primary_key => :sport_id,
  :foreign_key => :sport_id,
  :finder_sql =>
      'SELECT sa.* ' +
      'FROM events e, assignments sa ' +
      'WHERE e.sport_id = sa.sport_id AND e.home_school_id = sa.school_id ' +
      'ORDER BY e.event_date'
4

2 に答える 2

3

試してみてください:

events = Event.find(:all, :include => [:assignments])

次に、除算を内部に取得します。

events.first.assignment.division_id

これは、 has_many :assignments であるイベントを伝えたことを前提としています

于 2012-07-13T23:26:17.880 に答える
0

私はcomposite_primary_keys宝石を使用することになりました: https://github.com/drnic/composite_primary_keys

これにより、複数の外部キーを持つことができます。その後、インクルードを行いました(GrantGの回答のように)。最後に、Rails の group by 関数を使用して、他のテーブルのデータをハッシュに取得しました。

divisions_hash = events.group_by{|item| item.assignment.division_id}

私が最初にやりたかったこと(各レコードのアクティブなレコード結果内の他のテーブル属性に結合すること)を伝えることができる限り、現在Railsでは不可能です。

于 2012-07-20T20:54:23.390 に答える