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模块对其进行验证。

最新更新