Это потому, что у вас нет правильно настроенных таблиц, и вы запрашиваете класс.
Настройте свои ассоциации, как это:
class TableA < ActiveRecord::Base
has_many :table_bs, inverse_of: :table_a, dependent: :destroy
end
class TableB < ActiveRecord::Base
belongs_to :table_a, inverse_of: :table_bs
end
Ваши соответствующие миграции должны выглядеть следующим образом:
rails g migration create_table_as name:string
rails g migration create_table_bs name:string table_a:references
rake db:migrate
Ваша таблица TableB
теперь будет иметь на ней table_a_id
, где ассоциация затвердевает.
Теперь вы сможете запустить что-то подобное в вашем IRB Например:
@a = TableA.new
@b = TableB.new
@b.table_a = @a
@b.save
@a.table_bs
=> #<ActiveRecord::Associations::CollectionProxy [#<TableB id: 1, name: "Foo"]>
Update
Вот краткое небольшое объяснение на inverse_of
и dependent: :destroy
inverse_of
делает Ассоциированные объекты в Rails гораздо более эффективны. Не добавляя это в ваши ассоциации, выясняется, что связанные объекты Rails не указывают на те же объекты в памяти. Это означает, что без inverse_of
вы всегда будете попадать в базу данных, чтобы Rails мог захватить ассоциации. Если вы включите его, хотя, если объект уже находится в памяти, Rails просто возьмет этот объект! Это по существу двусторонняя привязка в памяти.
dependent: :destroy
используется для родительского объекта, чтобы гарантировать, что связанные объекты будут уничтожены при уничтожении родителя.
Пожалуйста, представьте код для ваших моделей для 'TableA' и' TableB'. Также обратите внимание, что 'TableBs' * не * атрибут или метод' TableA', если 'table_a'' has_many: table_bs'. Вам необходимо прочитать документацию Rails относительно [активных ассоциаций записей] (http://guides.rubyonrails.org/association_basics.html). Попробуйте '@ a.table_bs'. – lurker
Ни один из макросов связей рельсов (has_one, has_many и т. Д.) Не добавляет столбцы в db. Вы должны добавить их сами, создав миграцию и выполнив команду 'rake db: migrate'. http://guides.rubyonrails.org/active_record_migrations.html – max