ruby-on-rails - Rails.Share 2 个模型之间的变量(验证)
问题描述
所以遇到一些麻烦如何解决我的puzzle
.
我有 2 个模型
1) 模式1.rb
class Model1 < ActiveRecord::Base
set_table_name "Model1"
set_sequence_name "Model1"
module Validate
def validate_discount
errors.add(:discount, "#blank") if discount.blank?
end
end
end
2)模型2.rb
class Model2 < ActiveRecord::Base
include Model1::Validate
validate :validate_discount
end
我需要的?问题是在提交页面操作model2
时,所以我需要从那里执行验证以获得正确的错误显示,但discount
只存在于model1
我需要将它传递给model2
我现在得到的错误是:
undefined local variable or method `discount' for #<Model2:0x12c952f8>
我可能需要以某种方式通过控制器吗?我的意思是这样的:
Model2.new
Model2["discount"] = 20
Model2.discount
我现在被困住了。
解决方案
我认为您可以attr_accessor
用于此目的。有了它,您可以设置和获取discount
属性的值。
class Model2 < ActiveRecord::Base
include Model1::Validate
attr_accessor :discount
validate :validate_discount
end
有了这个,你可以调用:
model2 = Model2.new
model2.discount = params[:discount] #or whatever you set value for discount
然后用你的Model1::Validate
模块验证它。
推荐阅读
- java - 无状态资源服务器有效地验证 Facebook 令牌
- php - SimpleXML -> 获取条目信息问题
- windows - PowerShell 2 命令仅列出本地禁用的用户帐户
- javascript - 错误:knex:缺少必需的配置选项“客户端”
- ckeditor - 在ck编辑器5中从谷歌文档复制粘贴时删除锚标签
- signalr - 具有 SignalR 和 Asp.Net 核心身份功能的 Blazor 服务器端:响应状态代码不表示成功:401(未经授权)
- react-native - 在渲染时调用 withTiming 回调,而不是在动画完成时调用
- r - 将平均值添加到 r 中的分组小提琴图
- javascript - 将数据从 api 附加到 DOM
- sql - 试图让一个在 PowerShell 中工作的 sql 查询