【问题标题】:Two Tables Serving as one Model in RailsRails 中的两个表作为一个模型
【发布时间】:2010-06-18 02:17:13
【问题描述】:

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

这在 Rails 2 或 3 中可行吗?

【问题讨论】:

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


    【解决方案1】:

    据我所知,在 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-25
          • 2012-02-28
          • 2014-08-10
          • 1970-01-01
          相关资源
          最近更新 更多