16、表单与回调函数的高级应用

表单与回调函数的高级应用

1. 表单操作与持久化

在处理表单时,从 skip_user? 方法中删除嵌套表单后,需要考虑如何将这些更改持久化。当调用表单的 save 方法时,它会将所有属性同步回原始的 Thing 模型。例如:

thing.users = [#<User id: 1, email: "ryan@trb.org">]

这表明 Reform(实际上是 Disposable)会将嵌套表单的模型推送到集合写入器。由于删除了第二个嵌套表单,同步回模型的集合仅包含第一个作者。而 ActiveRecord 会自动处理剩下的工作,当使用新的、更小的集合更新 users 属性时,它会自动删除相应的作者关系。

2. 跳过现有用户

为了防止现有作者的信息被篡改,需要扩展跳过机制。虽然可以使用 :skip_if 选项,但由于无法在 lambda 中获取当前处理的项目索引,所以不能直接在 users 集合中使用。可以通过让现有用户的电子邮件字段变为只读来解决这个问题。代码如下:

collection :users, inherit: true, skip_if: :skip_user? do
  property :email, skip_if: :skip_email?

  def skip_email
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值