繁体   English   中英

我的联接表似乎不起作用

[英]My join table doesn't seem to be working

我的模特:

class CardSignup < ActiveRecord::Base
  has_one :conversion
  has_one :card_signup, :through => :conversion

class User < ActiveRecord::Base      
  has_many :conversions
  has_many :card_signups, :through => :conversions

class Conversion < ActiveRecord::Base
  belongs_to :card_signup
  belongs_to :user
end

我的迁移:

class AddCardSignupConversions < ActiveRecord::Migration
  def self.up
    create_table (:conversions, :id => false) do |t|
      t.integer :user_id
      t.integer :card_signup_id
    end
  end

  def self.down
    drop_table :conversions
  end
end

现在,我可以成功查找:

User.find(x).conversions
CardSignup.find(x).conversion

但是,我无法向这些链接添加任何对象。 不知道为什么..我试过这个:

User.last.conversions << CardSignup.last

返回的是:

ActiveRecord::AssociationTypeMismatch: Conversion(#2183228680) expected, got CardSignup(#2183113520)

这是为什么?

为什么在转换表中将键声明为字符串? 通常使用整数。 这可能是问题的原因

t.string :user_id
t.string :card_signup_id

编辑:您也尝试将CardSignup添加到转换关联。 这肯定是行不通的。 顺便说一句:错误说的一样。

好,我知道了!

class CardSignup < ActiveRecord::Base
  # add_column :card_signups, :converted_by, :integer   # Add this to your migration
  belongs_to :converted_by, :class_name => "User"

class User < ActiveRecord::Base
  has_many :conversions, :foreign_key => :converted_by, :class_name => "CardSignup"

这允许我为这段关系拥有自己独特的名字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM