Ruby on rails 如何使用具有相同列名的两个模型

Ruby on rails 如何使用具有相同列名的两个模型,ruby-on-rails,Ruby On Rails,我正在使用gem,希望创建两个对象(Foo的一个实例和Bar的一个实例),它们都具有“name”属性: class MarflarForm < Reform:Form include DSL include Reform::Form::ActiveRecord property :name, on: :foo property :name, on: :bar end 我能想到的解决这个问题的唯一方法是将其中一个数据库列重命名为“title”。还有别的办法

我正在使用gem,希望创建两个对象(Foo的一个实例和Bar的一个实例),它们都具有“name”属性:

class MarflarForm < Reform:Form
    include DSL
    include Reform::Form::ActiveRecord

    property :name, on: :foo
    property :name, on: :bar
end

我能想到的解决这个问题的唯一方法是将其中一个数据库列重命名为“title”。还有别的办法吗?

我从来没有用过改革创业板,但我觉得你可以随意调用这些属性。所以试试看

property :foo_file, on: :foo
property :baz_file, on: :baz
然后,在保存时,您只需负责将这些属性映射回正确的模型属性

@form.save do |data, nested|
  @foo.file = nested[:foo_file]
  @baz.file = nested[:baz_file]
  # etc...
end

这样做有效吗?

很简单,要实现此目标,请使用:

class MarflarForm < Reform:Form
    include DSL
    include Reform::Form::ActiveRecord

    property :name, on: :foo
    property :name, on: :bar
end
这样可以避免名称冲突

class MarflarForm < Reform:Form
    include DSL
    include Reform::Form::ActiveRecord

    property :name, on: :foo
    property :name, on: :bar
end
= simple_form_for @form do |f|
  = f.input "foo[name]"
  = f.input "bar[name]"