İlk Rails (3) Uygulam üzerinde çalışıyorum ve bir sürü veriyi toplamaya çalışıyorum.Diğer tohumlu modellere HABTM ilişkileri olan modelleri nasıl kurarsınız?
Yapmakta olduğum sorun şu ki, sadece ekim yaptığım diğer modellerle has_and_belongs_to_many ilişkisi olan bazı modelleri tohumlamak istiyorum. Doğru olanı yapıyorum ama beklediğim sonuçları alamıyorum.
class Asana < ActiveRecord::Base
has_and_belongs_to_many :therapeutic_foci
end
ve TherapeuticFocus modeli:
Bir Asana modeli (basitleştirilmiş) sahip benim db/seeds.rb olarak
class TherapeuticFocus < ActiveRecord::Base
has_and_belongs_to_many :asanas
end
, bazı TherapeuticFoci oluşturun:
tf = TherapeuticFocus.create([
{:name => 'Anxiety'},
{:name => 'Asthma'},
{:name => 'Fatigue'},
{:name => 'Flat Feet'},
{:name => 'Headache'},
{:name => 'High Blood Pressure'},
{:name => 'Stress'} ])
Sonra bir Asana oluşturun:
asanaCreate = Asana.create!([
{ :english_name => 'Mountain Pose',
:traditional_name => 'Tadasana',
:pronunciation => 'TadaSANA',
:deck_set => 'Basic',
:type => 'Standing',
:therapeutic_foci => TherapeuticFocus.where("name in ('Stress','Flat Feet')")}
])
Sonuç, TherapeuticFocus modellerinin oluşturulduğu, Asana'nın oluşturulduğu, ancak TherapeuticFocus modelleriyle olan ilişkileri oluşturmadığı sonucudur. Ortaya çıkan dizi boş.
Ben raylar konsolunda
TherapeuticFocus.where("name in ('Stress','Flat Feet')")
çalıştırırsanız, beklediğim iki kayıtlar olsun:
Yaniirb(main):010:0> TherapeuticFocus.where("name in ('Stress','Flat Feet')")
=> [#<TherapeuticFocus id: 6, name: "Flat Feet", description: nil, created_at: "2010-10-11 01:48:02", updated_at: "2010-10-11 01:48:02">,
#<TherapeuticFocus id: 19, name: "Stress", description: nil, created_at: "2010-10-11 01:48:02", updated_at: "2010-10-11 01:48:02">]
, kimse bu nasıl yapar? Ya da bunu yapmanın daha iyi bir yolu var mı?
Teşekkürler!
POST CEVAP: Ben t bu değişen çalışacağım
create_table :asanas_therapeutic_foci, :id => false do |t|
t.references :asana, :therapeutic_focus
end
: benziyor katılmak tablolar için
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'focus', 'foci'
end
Benim göç:
Zaten dönüm eklemişti. t.references yerine belongs_to ve işe yarayıp yaramadığını görün.
Aha, bunu anladım - Gelişimi izleyebileceğimi farkettim.Bir komisyon db'si sırasında oturum aç: kurulum ve sorunumun ": therapeutic_foci" özelliğinin atanabilir olmadığından kaynaklandığını gördüm. Bunu düzeltmek, her şey çalışıyor. Teşekkürler! –