2013-08-19 5 views
1

В настоящее время я работаю над приложением CRM в качестве демонстрационного проекта. В настоящее время у меня возникают трудности с обволакиванием, как обращаться к свойствам одного объекта из другого. Я пытаюсь сделать что-то вдоль линий:Доступ к свойствам другого объекта в Rails

<%= note.client.first_name %> 

В этом случае, у меня есть примечание для каждого клиента и соответствующая ассоциация установить между ними. Модели выглядят так:

class Note < ActiveRecord::Base 
    belongs_to :client 
    belongs_to :user 
end 

class Client < ActiveRecord::Base 
    has_many :users 
    has_many :notes 
end 

И базы данных выглядеть так:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
    t.string :first_name 
    t.string :last_name 
    t.string :designation 
    t.string :phone 
    t.string :email 
    t.string :password_digest 

    t.timestamps 
    end 
    end 
end 

Есть ли простой способ доступа к: first_name свойство идентификатора клиента, связанного с запиской?

+0

, связанные с: пользователи или: внимание? – shiva

ответ

1

Используйте delegate метод:

class Note < ActiveRecord::Base 
    delegate :first_name, to: :client 
end 

затем на ваш взгляд вы можете получить доступ к делегированные свойство от объекта, к которому она была делегирована:

<%= note.first_name %> 
+0

Я думаю, что сгенерированный метод должен быть 'client_first_name'? –

+0

Только если метод вызывается с опцией 'prefix: true'. – bgates

+0

Да, вы правы. Я лично предпочитаю опцию «префикс: истина». –