Tôi đang làm việc trên Ứng dụng Rails đầu tiên (3) của tôi và tìm cách gộp một loạt dữ liệu.Làm thế nào để bạn mô hình hóa các mối quan hệ HABTM với các mô hình hạt giống khác
Vấn đề tôi gặp phải là tôi muốn tạo một số mô hình có mối quan hệ has_and_belongs_to_many với các mô hình khác mà tôi vừa mới tạo. Tôi đang làm những gì có vẻ đúng, nhưng tôi không nhận được kết quả tôi mong đợi.
Tôi có một mô hình Asana (giản thể):
class Asana < ActiveRecord::Base
has_and_belongs_to_many :therapeutic_foci
end
và mô hình TherapeuticFocus:
class TherapeuticFocus < ActiveRecord::Base
has_and_belongs_to_many :asanas
end
Trong db của tôi/seeds.rb, tôi tạo ra một số TherapeuticFoci:
tf = TherapeuticFocus.create([
{:name => 'Anxiety'},
{:name => 'Asthma'},
{:name => 'Fatigue'},
{:name => 'Flat Feet'},
{:name => 'Headache'},
{:name => 'High Blood Pressure'},
{:name => 'Stress'} ])
Sau đó, tạo Asana:
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')")}
])
Kết quả là các mô hình TherapeuticFocus được tạo ra, Asana được tạo ra, nhưng nó không tạo ra các mối quan hệ với các mô hình TherapeuticFocus. Mảng kết quả trống.
Nếu tôi chạy
TherapeuticFocus.where("name in ('Stress','Flat Feet')")
trong đường ray giao diện điều khiển, tôi nhận được dự kiến hai kỷ lục:
irb(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">]
Vì vậy, làm thế nào để làm điều này?
Hoặc, có cách nào tốt hơn để thực hiện việc này không?
Cảm ơn!
POST ĐÁP:
tôi đã thêm uốn:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'focus', 'foci'
end
di cư của tôi cho các bảng tham gia trông giống như:
create_table :asanas_therapeutic_foci, :id => false do |t|
t.references :asana, :therapeutic_focus
end
Tôi sẽ cố gắng thay đổi này để t. thuộc_to thay vì t.references và xem nếu nó hoạt động.
Aha, tôi đã tìm ra - Tôi nhận ra mình có thể theo dõi sự phát triển.đăng nhập trong một db rake: thiết lập, và thấy rằng vấn đề của tôi bắt nguồn từ thuộc tính ": therapeutic_foci" không được chuyển nhượng hàng loạt. Sửa chữa nó, tất cả đều hoạt động. Cảm ơn! –