我正在使用回调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
答案 0 :(得分:1)
params
是控制器问题,与模型完全分开。例如,如果您尝试从控制台保存该模型,请考虑应该发生什么。
您需要在从控制器实例化后将param传递给模型,然后在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]
答案 1 :(得分:0)
你没有,模特不知道控制器或参数哈希。
您应该在控制器中包含此逻辑,而不是强制它在回调中。