Хорошо, поэтому я подумал, что понял, как спецификации отношений работают в рельсах, но я боролся с этим уже целый день.
В некотором контексте у меня есть две модели Автомобили и названия моделей (например, Impala, Charger и т. Д.), Где автомобили являются экземплярами названий моделей, а имена моделей - это не что иное, как справочная таблица названий моделей и некоторые другие атрибуты уровня модели.Контроллер имени модели вложен в пространство имен администратора, так как только имена администраторов могут использовать имена моделей CRUD.Конечные пользователи могут добавлять экземпляры автомобилей в модель «Автомобили».
Итак, в rout.rb у меня есть:
resources :cars
namespace :admin do resources :model_names end
Модели определены как:
class Admin::ModelName < ActiveRecord::Base
end
class Car < ActiveRecord::Base
belongs_to :admin_model_name
end
Миграции:
class CreateCars < ActiveRecord::Migration
def self.up
create_table :cars do |t|
t.string :chassis_number
t.string :description
t.references :admin_model_name
t.timestamps
end
end
class CreateAdminModelNames < ActiveRecord::Migration
def self.up
create_table :admin_model_names do |t|
t.string :model
t.integer :sort_index
#...additional attributes removed
t.timestamps
end
Администратор CRUD ModelName все отлично работает.Проблема в автомобилях просмотров.Я думаю, что я должен ссылаться на конкретное название модели автомобиля, например:
<%= @car.admin_model_names.Model =>
Но я получаю ошибку:
undefined method `admin_model_names' for #<Car:0x000001040e2478>
Я пробовал attr_accessible на модели ModelNames, но длябезрезультатно.На базовые данные ссылаются правильно.У меня также есть отношения HABTMT между Cars & Users, и все работало нормально, ссылаясь на атрибуты друг друга из разных представлений сущностей.Но не смог заставить это работать.Это связано с вложенным наследованием ресурсов и административного управления?
Единственный метод ссылок, который я нашел, который работает:
<%= Admin::ModelName.find(@car.admin_model_name_id).model %>
Но это действительно слишком много кода (и за счетнайти), чтобы добраться до этого атрибута.Есть ли способ Rails?
Заранее спасибо.
Скотт