Доступ Ruby on rails к информации о модели для другой модели

У меня есть первая модель Contact с полем :email и мне нужно это же поле :email в моей модели Customer со значением поля :email который в моей модели Contact,

Я использую mongoID для ORM, так что вот моя первая модель

class Contact
  include Mongoid::Document
  include Mongoid::Timestamps
  embedded_in :customer
  embedded_in :employee
  embedded_in :restaurant

  field :city
  field :street
  field :zip_code
  field :country
  field :phone_number
  field :email

и мой второй клиент модели

class Customer
  include Mongoid::Document
  include Mongoid::Timestamps
  embeds_one :contact

  devise :database_authenticatable, :lockable, :recoverable,
         :rememberable, :registerable, :trackable, :timeoutable, :validatable,
         :token_authenticatable

  attr_accessible :email, :password, :password_confirmation

  field :first_name
  field :last_name
  field :password
  field :gender
  field :encrypted_password

Благодарю.

2 ответа

Если вы используете activesupport, делегат должен сделать эту работу.

В customer.rb

delegate :email, :to => :contact

Вы можете просто написать свой собственный сеттер / геттер

class Customer
  include Mongoid::Document

  embeds_one :contact

  def email
    contact.email
  end

  def email=(string)
    contact.update_attributes(:email => string)
  end
end
Другие вопросы по тегам