2017-05-24 10 views
0

2つのテーブルを結合して値にアクセスできました。しかし、値にアクセスするには、2つのメソッドを呼び出す必要があります。私は何とか2つのコールを1つのコールにすることができるかどうか疑問に思っていますか?私は@company.ceo_name1回の呼び出しでテーブルへのアクセスが連結されました

+1

のActiveRecordの仕組みではありません。ただ '@ company.ceo.name'を使用してください。本当にしたいのであれば、 'Company'に' ceo_name'アクセサを定義することができます: 'def ceo_name; ceo.name;終わり。 – meagar

答えて

1

ようなもので上記@company.ceo.nameを呼び出すことができますどのように

# models/company.rb 
class Company < ApplicationRecord 
    has_one :ceo 
end 

# models/ceo.rb 
Class Ceo < ApplicationRecord 
    belongs_to :company 
end 

# controllers/company_controller.rb 
@company = Company.join(:ceo) 

# views/company/index.html.erb 
# ...somewhere in the view 
#{@company.ceo.name} 

あなたはあなたを助けるためにdelegateを使用することができます。あなたのcompanyモデルで

、その後

delegate :name, to: :ceo, prefix: true 

、あなたの呼び出しが提供されます、

@company.ceo_name 
#=> "xyz" 
+0

ちょうど私が探しているもの!ありがとう! – user3920567

関連する問題