Методы запроса атрибута для ассоциаций ActiveRecord - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть простая модель:

class Project < ActiveRecord::Base
  belongs_to :user

class User < ActiveRecord::Base
  has_many :projects

Проект имеет несколько атрибутов, таких как: date,: name, и для этих атрибутов у меня есть методы запроса атрибутов, доступные мне:

project.date?
project.name?

Но у меня нет:

project.user?

Вместо этого у меня есть:

project.user_id?

Взгляд на код показывает, что это потому, что фактическим «атрибутом» является user_id, иэто все, для чего предназначены методы запроса атрибутов?Это кажется логическим продолжением идеи иметь методы запросов и для отношений.

Что является обычной практикой?Кажется, у нас есть несколько грубых эквивалентов на выбор:

project.user.present?
project.user.blank?
project.user.nil?

Или просто используйте метод {relation}_id? и прекратите нытье?

1 Ответ

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

Почему бы просто не определить метод в проекте самостоятельно, чтобы соответствовать ожидаемому API?

class Project < ActiveRecord::Base

  def user?
   true if user.present?
  end
end

Я думаю, что лучшая практика в Ruby, и, честно говоря, во всем программировании, это четко указывать ваш интерфейс, и если вы думаете, что пользователь?это лучший способ сделать это, тогда я говорю пойти на это.

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