两个表作为Rails中的一个模型

时间:2010-06-18 02:17:13

标签: ruby-on-rails database database-design activerecord join

是否可以在rails中设置依赖于两个表的连接的模型?这意味着要找到/更新/销毁模型记录,需要在两个数据库表中的两个记录在连接中链接在一起。模型将只是两个表的所有列包装在一起,然后可以用于表单等。这样,当模型被创建/更新时,它只是一个应用于模型的表单变量哈希?

这是否可以在Rails 2或3中使用?

3 个答案:

答案 0 :(得分:0)

据我所知,不可能完全按照你在Rails中所要求的那样做,但你可以使用回调和has_one关联有效地完成你想用第二个模型完成的任务。实例:

class Widget < ActiveRecord::Base
  has_one :thingy
  before_save :save_thingy_object

  def save_thingy_object
    self.thingy = Thingy.new({ :attr1 => 'some', :attr2 => 'thing' })
  end
end

class Thingy < ActiveRecord::Base
  belongs_to :widget
end

答案 1 :(得分:0)

目前,多表继承在Ruby on Rails中没有开箱即用的解决方案。 虽然我建议尝试做与上述模型类似的关系,然后基本上滥用代理或手动代理来伪造关系属性以显示为模型的真实属性。

答案 2 :(得分:0)

在MySQL中,您可以尝试使用视图来连接两个表。但是我不确定如果需要更新记录以及Rails如何管理它会发生什么。

http://dev.mysql.com/doc/refman/5.1/en/create-view.html