4

ARエラーメッセージの示唆したようにソースを定義したようですが、まだエラーが発生しています。何か案が?ルビー、3.2 Railsの1.9.2Railsに多数のエラーがあります

class Document < ActiveRecord::Base 
     has_many :participations 
     has_many :users, :through => :participations 

     has_many :editing_sessions 
     has_many :editors, :through => :editing_sessions, :source => :users 
    end 


    class User < ActiveRecord::Base 
     has_many :participations 
     has_many :documents , :through => :participations 

     has_many :editing_sessions 
     has_many :open_documents, :through => :editing_sessions, :source => :documents 
    end 


    class EditingSession < ActiveRecord::Base 
     belongs_to :users 
     belongs_to :documents 
    end 

    create_table "editing_sessions", :force => true do |t| 
     t.integer "user_id" 
     t.integer "document_id" 

     t.datetime "created_at", :null => false 
     t.datetime "updated_at", :null => false 
    end 


    Console: 

    u = User.first 
    => ... OK 

    u.editing_sessions 
    => [] 

    u.open_documents 
    => ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :document in model EditingSession. Try 'has_many :open_documents, :through => :editing_sessions, :source => <name>'. Is it one of :users or :documents? 

答えて

3

belongs_toのラベルは単数形になるようにEditingSessionの定義を変更してみてください:ドキュメントとユーザーのクラス内の他のソースの定義では、

class EditingSession < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :document 
end 

しかし去ります複数形(すなわち:source => :users:source => :documents

Ruby on Rails Has-Many-Through Guide

+0

のコンベンションザッツ、このワットをありがとう問題として!それは私には分かりませんでした。私の欠点は何ですか? – aaandre

+0

Documentsクラスの関連付けは "has_many"なので、railsは複数形でなければならないと仮定しているため、source =>:documentsでなければなりません。しかし、EditingSessionは "belongs_to"を使用するので、それは1つのドキュメントにしか属していないので、 ":document"という名前のフィールドがあるはずです。 – plainjimbo

+0

また、エラーでは、「ソースアソシエーション(s):ドキュメントを見つけることができませんでした」と表示されます。大会全体には少し慣れています。 – plainjimbo

関連する問題