【问题标题】:How do I create a named has_many and belongs_to association in Rails 4.2?如何在 Rails 4.2 中创建一个命名的 has_many 和 belongs_to 关联?
【发布时间】:2016-03-15 06:39:42
【问题描述】:

我有一个名为 Comics 的模型。我的总体目标是让每个漫画都有可选的变体(has_many 漫画)和一个变体_of(belongs_to 漫画)。当我添加一个 variant_of 时,我希望反向变量字段也类似于相同的关系。

我首先创建了一个 variant_of 迁移:

class AddVariantOfToComics < ActiveRecord::Migration
  def self.up
    add_column :comics, :variant_of, :integer
  end

  def self.down
    remove_column :comics, :variant_of, :integer
  end
end

效果非常好。然后我尝试制作一个变体索引,这是我遇到问题的方面:

class AddVariantsToComics < ActiveRecord::Migration
  def change
    add_index :comics, ['variant_of'], :name => 'variants' 
  end
end

漫画模型:

class Comic < ActiveRecord::Base
  has_many :variants, :class_name => "Comic", :foreign_key => 'variants', 
  belongs_to :variant_of, :class_name => "Comic", :foreign_key => 'variant_of'

  ...
end

谁能告诉我如何关联这些字段?索引是正确的方法还是我的命名妨碍了?

【问题讨论】:

  • 我真的不知道你想要完成什么。你能用语言解释你希望最终结果能够做什么吗?

标签: ruby-on-rails ruby-on-rails-4 rails-migrations


【解决方案1】:

has_many 关联的外键应该是variant_of。喜欢:

has_many :variants, :class_name =&gt; "Comic", :foreign_key =&gt; 'variant_of'

它后面不应该有逗号。在您的示例中,它是::foreign_key =&gt; 'variants',,这不是有效的语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多