2012-02-01 23 views
0

私は定義されたスコープを持っているポジションのモデルを持っています。私は@ profile.positions.defaultのようなことができます。これは、アクティブなレコード関係とデフォルトの位置レコードを返します。問題は...今私はデフォルトのレコードを持っていることを、私はタイトルなどの体位の他の属性にアクセスする必要があることをへのアクセスの属性が

@profile.positions.default.title 

ですが、上記のエラーを返します:#

のために未定義のメソッド `タイトル」:NoMethodErrorを

手がかりはありますか?ありがとう。

答えて

1

スコープはオブジェクトの1つではなくcollectionを返します。したがって、ActiveRecordの結果の配列でtitleを呼び出そうとしています。

あなたは、おそらくこのような何かしたい:

@profile.positions.default.first.title 

をそれとも、常にただ一つのレコードをしたい場合、あなたは、クラスメソッドに範囲から切り替えることがあります。

その後
def self.default 
    where('is_default = ?', 1).first 
end 
+0

ありがとうございます。 – absolutskyy

0
class Profile < ActiveRecord::Base 
    has_many :positions 
    has_one :default_position, :class_name => 'Position', 
          :conditions => ['is_default = ?', true] 
end 

@profile.default_position.title 
関連する問題