私は2日間の解決策を見つけようとしてきましたが、まだ何も出てこなかった。私には、また、Course
からの利益が、また、私のデータベースに他のモデルに利益をもたらすの列を、持っているContent
モデルを持っている
Rails(5.0.0.1)で多態性と継承を混ぜる方法
create_table :courses do |c|
c.integer :member_limit
c.string :color
c.float :rating
c.timestamps
end
:
私は、次の列がありCourse
と呼ばれるモデルを持っている
create_table :contents do |c|
c.references :contentable, polymorphic: true, index: true
c.string :title
c.text :description
c.text :script
c.string :cover
c.string :media_type
...
c.integer :creator_id, index: true, foreign_key: :user_id
end
私はコースが内部などとして持つ列を失うことになるので、私はCourse < Content
を設定することはできませんなど、私はPolymorphicに行った。しかし、私はcourse.content.title
に電話してcourse.title
と書くだけでなく、同じ方法でcourse.member_limit
にアクセスし、両方のフィールドをcourse.save
で保存する必要はありません。
最高のアプローチをお勧めしますか?
現在の構造。
コース:
class Course < ApplicationRecord
has_one :content, as: :contentable, dependent: :destroy
after_initialize :init
def init
if self.new_record?
self.content ||= build_content
end
end
end
内容:
class Content < ApplicationRecord
belongs_to :creator, optional: true, class_name: 'User'
end