gpt4 book ai didi

ruby-on-rails - Controller 编辑方法,提交前修改对象数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:56 24 4
gpt4 key购买 nike

当用户保存表单时,我想在保存前做以下检查

if header2 is null
header2 = header1

我不想添加验证并停止保存操作,因为只有在极少数情况下才需要 header2。我不确定如何让 Controller 中的更新方法执行此操作。提交更新的命令是

if @entry.update_attributes(params[:entry])

那么我应该修改 params[:entry][:header2] 字段吗?我尝试使用以下代码执行此操作,但它没有更新

params[:entry][:header2] = params[:entry][:header1]

如有任何帮助,我们将不胜感激。我开始觉得我应该在客户端使用 javascript 来处理这个问题。

--编辑:添加到下面的原始帖子--

我在下面尝试了 coderama 的建议,但都不适合我

  validate :data_present

def data_present
self.header2 = self.header1 if self.header2 == nil
end

  def update
@entry = Entry.find(params[:id])
params[:entry][:header2] = params[:entry][:header1] unless params[:entry][:header2].present?

respond_to do |format|
if @entry.update_attributes(params[:entry])....

SQL

mysql> select header1, header2 from entries where title = "new";
+---------+---------+
| header1 | header2 |
+---------+---------+
| Blah | NULL |
+---------+---------+
1 row in set (0.00 sec)

我希望能够在编辑模式下打开,不做任何更改(字段已经为空)并点击保存并更改此代码。也尝试过创建新的条目记录,但它在那里也不起作用。

最佳答案

给你,连同要证明的规范

/app/models/model_name.rb

class ModelName < ActiveRecord::Base

attr_accessor :header_1, :header_2
before_validation :header_check

def header_check
return if self.header_2.blank?
self.header_1 = self.header_2 if self.header_1.blank?
end

end

和规范:/spec/models/model_name_spec.rb

require 'spec_helper'

describe ModelName do

before(:each) do
@model_name = ModelName.new
@header_one_text = "HeaderOneText"
@header_two_text = "HeaderTwoText"
end
it "should should set header 2 if header 1 is blank" do
@model_name.header_2 = @header_two_text
@model_name.valid?
@model_name.header_1.should == @header_two_text
end

it "should leave header 1 if both are set" do
@model_name.header_1 = @header_one_text
@model_name.header_2 = @header_two_text
@model_name.valid?
@model_name.header_1.should == @header_one_text
end

end

关于ruby-on-rails - Controller 编辑方法,提交前修改对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com