2017-05-10 12 views
0

モデルOrganiserからモデルEventを介して名前の値を取得します。model.model.nameから 'name'を取得してください

私のクラスOrganiser

class Organiser < ActiveRecord::Base 
    belongs_to :customer 
    has_many :events 
end 

マイモデルEvent:Grailsので

class Event < ActiveRecord::Base 
    belongs_to :customer 
    belongs_to :location 
    belongs_to :organiser 
    has_many :subscribers 
end 

、それは簡単な呼び出しです:主催者から私の名前を与えた

def eventInstance = Event.find.... 

def organiserInstance = eventInstance.organiser 

organiserInstance.name

これはRuby on Railsでどのように行われますか?

@orgName = @eventInstance.organiser.name 

をその後私はエラーを取得する:私が試した

undefined method `organiser' for #<Event::ActiveRecord_Relation:0x007f86152ef098> 
+0

本当に、本当に浅いnitpick:Railsはすべて設定より規約程度であり、あなたがその命名規則に固執するとき、それは本当にパンチをパック(HTTPS: //gist.github.com/alexpchin/f5d2be2ef3735889d315)。あなたがそれに従うならば、あなたは間違いなく、将来回避されてしまう頭痛を避けるでしょう。 :) –

答えて

1

エラーが@eventInstanceは、実際にはコレクションではなく、単一のインスタンスであることを意味します。

最初に@eventInstanceEventモデルの単一インスタンスに設定する必要があります。その後、コードは動作します:

@eventInstance = Event.first 
@orgName  = @eventInstance.organizer.name 

P.S. Rubyの大会は、ヘビのケースを使用して変数を呼び出すことではなく、キャメルケース:

@event_instance = Event.first 
@org_name  = @event_instance.organizer.name 
+0

いいえ、それはありません。それは単一のインスタンスです... @eventInstance = Event.where(イベントコード:セッション[:キー])私に単一のレコードを与えました – diedaaf

+1

@diedaafそれはあなたに*コレクション* ***を与えます***単一のレコード。あなたはそれを 'Event.where(eventcode:session [:key])。first 'にしてsingle * record *を取得したいとします。 –

+0

Event.where(evencode:session [:key]は私に1つのレコードを与えました。そのキーで1つのイベントしかありません – diedaaf

関連する問題