Делегированный тип Rails 6.1 - реализация контроллеров

В настоящее время я экспериментирую с новой функцией Rails 6.1, Delegated types, что кажется лучшей альтернативой для предотвращения ИППП. (rubyonrails.org: DelegatedType - GitHub: запрос на перенос )

После долгих поисков я нашел некоторые ресурсы об этой функции, но все они описывают то же самое, что и запрос на перенос (более или менее), но не контроллеры. Итак, я пытаюсь понять, как лучше всего писать контроллеры?

Для создания новых записей они предлагают:

      # You create a new record that uses delegated typing,
# by creating the delegator and delegatee at the same time, like so:

Entry.create! entryable: Comment.new(content: "Hello!"), creator: Current.user

Но нужно ли это реализовать в каждом контроллере? У меня есть небольшой пример ниже:

классифицированный.rb

      class Classified < ApplicationRecord
  delegated_type :classifiedable, types: %w[ Car Bike ], dependent: :destroy
  # scope :with_classifiedables, -> { includes(:classifiedable) }
end

classifieadable.rb

      module Classifiedable
  extend ActiveSupport::Concern

  included do
    has_one :classified, as: :classifiedable, touch: true
    accepts_nested_attributes_for :classified
  end
end

car.rb

      class Car < ApplicationRecord
  include Classifiedable
end

bike.gr

      class Bike < ApplicationRecord
  include Classifiedable
end

schema.rb

      create_table "classifieds", force: :cascade do |t|
  t.string "title"
  t.text "description"
  t.string "classifiedable_type"
  t.integer "classifiedable_id"
  t.datetime "created_at", precision: 6, null: false
  t.datetime "updated_at", precision: 6, null: false
end

create_table "cars", force: :cascade do |t|
  t.integer "seats"
  t.datetime "created_at", precision: 6, null: false
  t.datetime "updated_at", precision: 6, null: false
end

create_table "bikes", force: :cascade do |t|
  t.integer "whells"
  t.datetime "created_at", precision: 6, null: false
  t.datetime "updated_at", precision: 6, null: false
end

Может ли кто-нибудь подсказать мне, как реализовать действие new-create для объявлений и хотя бы автомобилей? Car_params всегда терпит неудачу. Как видите, у меня есть название и описание, которые я хочу использовать как для автомобилей и мотоциклов, так и для их собственных атрибутов. Внутри каждой формы (в нашем примере формы автомобилей) я использую f.fields_for :classified для названия и описания.

Итак, он должен располагаться в / ads / cars / new и иметь во внешнем интерфейсе:

Создавая машину, это также должно создавать засекреченную запись, верно?

Спасибо за ваше время и любые советы приветствуются :)

0 ответов

Другие вопросы по тегам