Доступ к атрибутам через отношения Rails - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть модель позиции, для которой определена область действия:

scope :default, where('is_default = ?', 1)

Идея заключается в том, что я хочу знать, какая позиция по умолчанию.Я могу сделать что-то вроде: @ profile.positions.default, и это возвращает отношение activerecord и запись позиции по умолчанию.Проблема в том, что теперь, когда у меня есть запись по умолчанию, мне нужно получить доступ к другим атрибутам позиций, таким как заголовок ..

@profile.positions.default.title 

, но приведенное выше возвращает ошибку: NoMethodError: undefined метод `title 'для #

Есть какие-нибудь подсказки?Спасибо.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Область видимости превращает collection объектов, а не один объект, поэтому вы пытаетесь вызвать title для массива результатов ActiveRecord.

Вы, вероятно, хотите что-то вроде этого:

@profile.positions.default.first.title

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

def self.default
  where('is_default = ?', 1).first
end
0 голосов
/ 01 февраля 2012
class Profile < ActiveRecord::Base
  has_many :positions
  has_one :default_position, :class_name => 'Position', 
                             :conditions => ['is_default = ?', true]
end

Тогда

@profile.default_position.title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...