首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用具有相同列名的两种模型的reform

如何使用具有相同列名的两种模型的reform
EN

Stack Overflow用户
提问于 2013-09-04 12:40:30
回答 2查看 628关注 0票数 0

我正在使用改革 gem,并希望创建两个对象( Foo的一个实例和一个Bar的实例),这两个对象都具有一个'name‘属性:

代码语言:javascript
复制
class MarflarForm < Reform:Form
    include DSL
    include Reform::Form::ActiveRecord

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

但我不能这么做,原因很明显:

代码语言:javascript
复制
= simple_form_for @form do |f|
  = f.input :file
  = f.input :file

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-05 06:10:22

它很简单,为了实现这一目标,请使用:

代码语言:javascript
复制
class MarflarForm < Reform:Form
    include DSL
    include Reform::Form::ActiveRecord

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

在视野中

代码语言:javascript
复制
= simple_form_for @form do |f|
  = f.input "foo[name]"
  = f.input "bar[name]"

这样就避免了名字的碰撞。

票数 1
EN

Stack Overflow用户

发布于 2013-09-04 12:59:59

我从来没有使用过改革宝石,但它看起来像你可以叫任何你想要的属性。所以试试

代码语言:javascript
复制
property :foo_file, on: :foo
property :baz_file, on: :baz

然后,在保存时,您只需负责将这些属性映射回正确的模型属性。

代码语言:javascript
复制
@form.save do |data, nested|
  @foo.file = nested[:foo_file]
  @baz.file = nested[:baz_file]
  # etc...
end

像这样的东西有用吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18614091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档