Доступ 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