0

我有两个表用户和 user_new。这两个表具有相同的架构:

id INT
name VARCHAR(20)
email address  VARCHAR(20)
age  INT
address  VARCHAR(20)

我想将这两个表映射到 Rails 模型文件中的单个模型文件 User 中。

谁能建议我在 Rails 中执行此活动的好方法。让我知道是否需要任何澄清?

4

2 回答 2

0

最好的解决方案是将您的架构更改为 STI(单表继承)。将“类型”列添加到用户,您可以创建不同的用户。使用 STI,您始终可以与一个用户对象进行交互,而不是与一个奇怪的关联。要了解 STI,请查看以下链接:

1- http://www.therailworld.com/posts/18-Single-Table-Inheritance-with-Rails

2- http://www.railscasts.com/episodes/394-sti-and-polymorphic-associations

3- http://blog.thirst.co/post/14885390861/rails-single-table-inheritance

Matherick 对我的一个问题的原始回答。

4-来自 TeachMeToCode 的免费截屏视频

例如:

# /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
于 2013-09-17T11:00:39.327 回答
-1

user_new您可以使用以下命令创建新文件app/models

class UserNew < ActiveRecord::Base
  self.abstract_class = true
  establish_connection 'other_database'
  set_table_name "user_new"
end

放入database.yml

other_database:
  adapter: mysql2
  database: pudra
  username: root
  encoding: utf8
# use your connection params

现在你有两个模型,连接到不同的数据库。然后你可以:

UserNew.all.each do |user_new|
  User.create(name: user_new.name, email: user_new.email, age: user_new.age)
end

如果这些表在一​​个数据库中,您只能:

class UserNew < ActiveRecord::Base
  set_table_name "user_new"
end
于 2013-09-17T10:44:03.680 回答