Ror Active Record“组件”类

时间:2010-08-15 21:56:14

标签: ruby activerecord ruby-on-rails-3

来自我对nHibernate的经验,我想知道如何在ActiveRecord中映射(n)hibernate的组件类

class Person < ActiveRecord::Base
   #somehow get a :name attribute here
end

class Name
  @fist_name
  @last_name
end

如何只用一个表来完成(所以这不是1:1,但是我想在db中有一个:name_first_name列(或者是什么约定)?

1 个答案:

答案 0 :(得分:2)

这就是composed_of的用途。

对于你的例子:

class Person < ActiveRecord::Base
   composed_of :name, :class_name => "Name", :mapping =>
            [ # database                         ruby
              %w[ first_name    first_name ],
              %w[ last_name    last_name ]
            ],
end

class Name
  attr_accessor :first_name, :last_name
end

然后,您必须添加两个数据库列(first_name,last_name)。