Форма контрольной группы для полиморфного объединения рельсов - PullRequest
0 голосов
/ 25 октября 2018

В моем приложении rails у меня есть следующие модели:

class Book < ApplicationRecord
   belongs_to :bookable, polymorphic: true
end

class Student < ApplicationRecord
   has_many :books, as: :bookable
end

class Library < ApplicationRecord
  has_many :books, as: :bookable
end

При создании нового объекта книги в form.html.erb, как я могу отобразить t.integer: bookable_id и t.string: bookable_type наконкретный объект?

В идеале я хотел бы использовать grouped_collection_select и перетянуть сначала Студента и Библиотеку и ниже их идентификаторов.

Заранее спасибо.

1 Ответ

0 голосов
/ 25 октября 2018

При создании нового объекта книги в form.html.erb, как я могу сопоставить t.integer: bookable_id и t.string: bookable_type с конкретным объектом?

Ну, выможно использовать collection_select или grouped_collection_select (в соответствии с вашими требованиями) для отображения Students и Libraries для хранения значений для bookable_id.

Для bookable_type, Rails под капотом читаетимена классов экземпляров и захватывает имя класса и сохраняет его как значение для bookable_type.Например, рассмотрим следующий подход

@student = Student.find(1)
@student.books.create

Приведенный выше фрагмент кода создаст запись в таблице books с bookable_id = 1 и bookable_type = "Student"

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