在我的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并将第一个Student和Library拉到其ID下方。
谢谢。
答案 0 :(得分:0)
在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"