Ruby on rails 在rails的单个模型文件中映射两个数据库表

Ruby on rails 在rails的单个模型文件中映射两个数据库表,ruby-on-rails,model,Ruby On Rails,Model,我有两个表users和user\u new。这两个表具有相同的架构: id INT name VARCHAR(20) email address VARCHAR(20) age INT address VARCHAR(20) 我想将这两个表映射到Rails中模型文件中的单个模型文件用户中 有人能给我推荐一种在Rails中执行此活动的好方法吗。如果需要澄清,请告诉我?您可以在app/models中创建新文件user\u new,其中包括: class UserNew < Active

我有两个表users和user\u new。这两个表具有相同的架构:

id INT
name VARCHAR(20)
email address  VARCHAR(20)
age  INT
address  VARCHAR(20)
我想将这两个表映射到Rails中模型文件中的单个模型文件用户中


有人能给我推荐一种在Rails中执行此活动的好方法吗。如果需要澄清,请告诉我?

您可以在
app/models
中创建新文件
user\u new
,其中包括:

class UserNew < ActiveRecord::Base
  self.abstract_class = true
  establish_connection 'other_database'
  set_table_name "user_new"
end
现在有两个模型,连接到不同的数据库。然后你可以:

UserNew.all.each do |user_new|
  User.create(name: user_new.name, email: user_new.email, age: user_new.age)
end
如果这些表位于一个数据库中,则u只能:

class UserNew < ActiveRecord::Base
  set_table_name "user_new"
end
class UserNew
最好的解决方案是将模式更改为STI(单表继承)。向用户添加一列“类型”,您可以创建不同的用户。使用STI,您始终可以与一个用户对象交互,而不是与奇怪的关联交互。。要了解STI,请查看以下链接:

1-

2-

3-

上面是Mattherick对我的一个问题的原始答案

4-

例如:

# /app/models/sports/sport.rb
class Sport < ActiveRecord::Base
  # Methods, variables and constants
end


# /app/models/sports/probasketball.rb
class ProBasketball < Sport
  # Methods, variables and constants
end


# /app/models/sports/profootball.rb
class ProFootball < Sport
  # Methods, variables and constants
end



# /app/models/sports/baseball.rb
class Baseball < Sport
  # Methods, variables and constants
end
#/app/models/sports/sport.rb
class Sport
我可以将该类添加到单个文件中,而不是在app/model文件夹中创建新的文件user\u new。基本上我只想保留一个文件,其中应该包含这两个文件的信息。我了解了STI。但是在使用STI时,我认为我需要创建一个基类(如您的示例“Sport”)。此外,我们还需要在基类中添加“type”列。有什么方法可以避免创建基表吗?您是否检查了屏幕广播4?他为用户树立了榜样,看吧,也许你会发现一些新的东西
# /app/models/sports/sport.rb
class Sport < ActiveRecord::Base
  # Methods, variables and constants
end


# /app/models/sports/probasketball.rb
class ProBasketball < Sport
  # Methods, variables and constants
end


# /app/models/sports/profootball.rb
class ProFootball < Sport
  # Methods, variables and constants
end



# /app/models/sports/baseball.rb
class Baseball < Sport
  # Methods, variables and constants
end