/ / has_many / belongs_to jedinečné združenia v RoR - ruby-on-rail, rubín, rubín-na-koľajnice-3, aktívny záznam

has_many / belongs_to jedinečné združenia v RoR - ruby ​​na koľajniciach, rubín, rubín na koľajniciach-3, aktívny záznam

Ukladám údaje o parlamentných veciach do mojej databázy ako Affair, ktoré môžu patriť k a Councillor alebo a Group, Ja som nový Ruby a ActiveRecord.V bývalých verziách RoR by som použil has_and_belongs_to_many, a to fungovalo tiež.

class Councillor < ActiveRecord::Base
has_many :affair_holdings, :foreign_key => :councillor_id
has_many :affairs, through: :affair_holdings
end

class Affair < ActiveRecord::Base
has_many :affair_holdings, :foreign_key => :affair_id
has_many :councillors, through: :affair_holdings
end

class Affair_Holdings < ActiveRecord::Base
belongs_to :affair
belongs_to :councillor
end

Neskôr v kóde, chcem vytvoriť nové združenie:

affair.councillors << Councillor.find_by(:id => 3)

Ale z akéhokoľvek dôvodu to nefunguje.To mi dáva chybové hlásenie:

/Users/me/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/inheritance.rb:125:in `compute_type": uninitialized constant Affair::AffairHolding (NameError)
from /Users/me/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/reflection.rb:178:in `klass"
from /Users/me/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/associations/association.rb:123:in `klass"
from /Users/me/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/associations/collection_association.rb:37:in `reader"
from /Users/me/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/associations/builder/association.rb:70:in `affair_holdings"
from crawl.rb:196:in `affair"
from crawl.rb:233:in `<main>"

Aká je moja vina? Ako môžem vyriešiť tento problém? Ďakujem za pomoc.

odpovede:

3 pre odpoveď č. 1

Názov triedy by mal byť AffairHolding a nie Affair_Holdings.


0 pre odpoveď č. 2

Áno, názov triedy by mal byť AffairHolding a vždy používať singulárne a počiatočné veľké písmená pre názov triedy