Rails 4 - has_many通过提取问题

时间:2014-06-01 21:07:13

标签: ruby-on-rails-4 has-many-through

我通过快捷方式使用rails has_many实现了多对多的关联。

我的模型叫做:

  1. Cliente
  2. StatusTransacaoPagSeguro
  3. 历史一
  4. 他们是这样定义的:

    class StatusTransacaoPagSeguro < ActiveRecord::Base
      has_many :historicos
      has_many :clientes, through: :historicos
    end
    
    class Cliente < ActiveRecord::Base
      has_many :historicos
      has_many :status_transacao_pag_seguros, through: :historicos
    end
    
    class Historico < ActiveRecord::Base
      belongs_to :cliente
      belongs_to :status_transacao_pag_seguro
    end
    

    我有以下历史记录:

    #<Historico id: 1, cliente_id: 3, status_transacao_pag_seguros_id: 3, created_at: "2014-06-01 19:44:42", updated_at: "2014-06-01 19:44:42">
    

    当我跑

    historico.cliente
    

    我得到了相关的&#39; cliente&#39;记录,但是当我跑步时

    historico.status_transacao_pag_seguro
    

    nil

    问题出在哪里?我正确地定义了复数?由于这些名称是葡萄牙语,我认为它存在一些问题,但我不知道如何克服它。

1 个答案:

答案 0 :(得分:1)

您在历史剧表中的status_transacao_pag_seguro的FK错误。它应该是status_transacao_pag_seguro_id(没有s)。通过以下迁移,您应该很高兴:

def change
  rename_column :historicos, :status_transacao_pag_seguros_id, :status_transacao_pag_seguro_id
end