私はこれで何日もスタックしており、すべてを試しました。
シンプルに多くの関連付けを実行しようとしていますが、機能しません:
私が必要としているのは、各オーブがそれに関連付けられた orb_type を取得することです。
私は足場を生成します:
rails generate scaffold orb_type nome
rails generate scaffold orb nome:string descr:text orb_type_id:integer
レーキを db:migrate にします。
モデルを変更します。
class Orb < ActiveRecord::Base
has_many :orb_types
validates_associated :orb_types
attr_accessible :descr, :nome, :orb_type_id
validates :nome, uniqueness: true, presence: true
end
class OrbType < ActiveRecord::Base
attr_accessible :nome
validates :nome, uniqueness: true, presence: true
belongs_to :orb
end
そして、それを機能させようとしました:
$ rails c
1.9.3-p448 :001 > tipo = OrbType.new nome: "Planeta"
1.9.3-p448 :002 > tipo.save
1.9.3-p448 :003 > tipo = OrbType.find(1)
1.9.3-p448 :004 > planeta = Orb.new nome:"Testname", descr: "TestDescr"
1.9.3-p448 :005 > planeta.orb_type = tipo
そして最後の行でエラーが発生します:
NoMethodError: undefined method `each' for #<OrbType:0x00000003dc02a0>
どうしたんだ?アンダースコアとレールの「規則」が頭を悩ませています。
他にも同様のトピックをたくさん見ましたが、それらの解決策はどれもうまくいきませんでした!