gpt4 book ai didi

ruby-on-rails - 在模型上使用回调时如何访问 params[]

转载 作者:行者123 更新时间:2023-12-05 04:17:53 30 4
gpt4 key购买 nike

我正在使用回调 before_update 调用模型上的函数,该函数在我的变量上设置复选框值。

问题是 params[:mail_checker_issue] 上的复选框值在模型层上无法访问。

问题是:如何使用回调 before_update 访问此参数?在我的代码下面:

module IssueSetChecketIssuePatch
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
before_save :before_mail_checker
end
end
end

module InstanceMethods
require_dependency 'issue'
def before_mail_checker
self.set_mail_checker_issue(params[:mail_checker_issue])
end

def set_mail_checker_issue(mail)
@mail_checker = mail
end

def get_mail_checker_issue
@mail_checker
end
end

Rails.configuration.to_prepare do
Issue.send(:include, IssueSetChecketIssuePatch)
end

最佳答案

params 是 Controller 的关注点,完全独立于模型。例如,考虑如果您尝试从控制台保存该模型会发生什么。

在从 Controller 实例化模型后,您需要将参数传递给模型,然后在 before_save 回调中检查模型上设置的值。

还值得注意的是,您的代码有点不像 Rubyish(实际上,看起来很像 Java!)- 您只需在模型上定义一个 attr 即可获得相同的效果。

Rails.configuration.to_prepare do
require_dependency 'issue'
class Issue
attr_accessor :mail_checker_issue
end
end

然后,一旦遇到问题:

# Controller code
@issue = Issue.find(params[:id])
@issue.mail_checker_issue = params[:mail_checker_issue]

关于ruby-on-rails - 在模型上使用回调时如何访问 params[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499771/

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