带下划线的Rails迁移命名空间

时间:2014-05-30 12:22:28

标签: ruby-on-rails

我有一个模特

class WorldCup::UploadRecord < ActiveRecord::Base
end

其路径为model/world_cup/upload_record.rb

我想为它添加一列。我试过了

class AddPhotoToUploadRecord < ActiveRecord::Migration
  def change
    add_column :world_cup_upload_records, :photo, :string
  end
end

但这并不奏效。什么是正确的数据库名称?

1 个答案:

答案 0 :(得分:0)

以下应该做的伎俩;)

class AddPhotoToUploadRecord < ActiveRecord::Migration
  def change
    add_column "#{WorldCup::UploadRecord.table_name.intern}", :photo, :string
  end
end

在读完评论后,我发现你可能面临完全不同的问题。

或者:

  1. 您正在进行单表继承,其中您有一个父类和一个或多个继承类,并且您的表具有名为type的必填列。然后:lottery_records将是正确的输出。
  2. 您只想共享或封装应用程序的业务逻辑并使用继承。然后,您需要将self.abstract_class = true放入LotteryRecord AR类定义中,这样WorldCup::UploadRecord将共享逻辑LotteryRecord而不是表格。 最后,根据您迄今为止对您的申请所做的事情,:lottery_records可能是也可能不是您寻求的正确输出。
  3. 我建议在Rails中阅读一些关于STI的文档,以便更好地理解你想要实现的目标:)