Проблема самореференциальной ассоциации - PullRequest
0 голосов
/ 14 сентября 2010

У меня есть следующие модели:

create_table :categories do |t|
  t.integer :category_id
  t.integer :language_id
  t.timestamps
end

create_table :category_localizated_categories, :force => true do |t|
  t.column :category_id, :integer
  t.column :localizated_category_id, :integer
end

class Category < ActiveRecord::Base
  has_many :category_localizated_categories
  has_many :localizated_categories, :through => :category_localizated_categories
end

class CategoryLocalizatedCategory < ActiveRecord::Base
   belongs_to :category
   belongs_to :localizated_category
end

Я могу сделать:

category1 = Category.create :language_id => 1
category2 = category1.localizated_categories.create :language_id => 2

И в БД создаются 2 категории, но ассоциация не создается:

category.localizated_categories
[]

В чем может быть проблема? Благодаря.

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Почему бы вам не пойти на более простую ссылку на себя?

class Category < ActiveRecord::Base
  belongs_to :base_category, :class_name => "Category"
  has_many :localized_categories, :class_name => "Category", :inverse_of => :base_category

  scope :base, where(:base_category_id => nil)
  scope :localized, where("base_category_id NOT NULL")
  …
end
0 голосов
/ 14 сентября 2010
class Category < ActiveRecord::Base
  has_many :category_localizated_categories
  has_many :localizated_categories, :through => :category_localizated_categories
  accepts_nested_attributes_for :category_localizated_categories
end

Я думаю, вам нужны здесь вложенные модели:

http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...