为了账号安全,请及时绑定邮箱和手机立即绑定

Rails has_many具有动态条件

Rails has_many具有动态条件

SMILET 2019-11-14 10:52:19
我想要的是创建一个模型,该模型使用has_many关联以动态方式与另一个模型连接,而无需像这样的外键:has_many :faixas_aliquotas, :class_name => 'Fiscal::FaixaAliquota',            :conditions => ["regra_fiscal = ?", ( lambda { return self.regra_fiscal } ) ]但是我得到了错误:: SELECT * FROM "fis_faixa_aliquota" WHERE ("fis_faixa_aliquota".situacao_fiscal_id = 1AND (regra_fiscal = E'--- !ruby/object:Proc {}'))这可能吗?
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

Rails 4+方式(感谢Thomas在下面回答了此问题):

has_many :faixas_aliquotas, -> (object) { 

           where("regra_fiscal = ?", object.regra_fiscal)

         },

         :class_name => 'Fiscal::FaixaAliquota'

Rails 3.1+方式:

has_many :faixas_aliquotas, :class_name => 'Fiscal::FaixaAliquota',

         :conditions => proc { "regra_fiscal = #{self.regra_fiscal}" }

Rails 3及以下:

has_many :faixas_aliquotas, :class_name => 'Fiscal::FaixaAliquota',

         :conditions => ['regra_fiscal = #{self.regra_fiscal}']

不,这不是错误。条件用单引号引起来,仍然包含代码#{self.regra_fiscal}。当条件子句被撤消时,regra_fiscal方法将在的对象上调用self(无论该类是什么)。用双引号将不起作用。


我希望这是您要寻找的。


查看完整回答
反对 回复 2019-11-14
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

Rails 4 +方式:


has_many :faixas_aliquotas, -> (object){ where("regra_fiscal = ?", object.regra_fiscal)},  :class_name => 'Fiscal::FaixaAliquota'


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 826 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信