Погана практика перейменування модельних асоціацій у вашу модель?

class TransactionItem < ActiveRecord::Base
  belongs_to :transaction
end 

class Transaction < ActiveRecord::Base
  has_many :transaction_items

  def items
    self.transaction_items
  end
end



class CategoryItems < ActiveRecord::Base
  belongs_to :category
end 

class Category< ActiveRecord::Base
  has_many :category_items

  def items
    self.category_items
  end
end

In an effort to simplify the interface to Objects that have Items

чи є недоліки, яких я не бачу? чи кращий спосіб для досягнення цієї мети?

category = Category.first
category.items
# instead of
# category.category_items

transaction = Transaction.first
transaction.items
# instead of
# transaction.transaction_items
1

2 Відповіді

Іншим є вказання класу (див. параметри документа has_many ):

has_many :items, :class_name => "CategoryItem"

Я не бачу жодних серйозних проблем з вашим шляхом.

Єдиним застереженням було б те, що стосується об'єднань, що рефлекторно (наприклад, інструмент документації), використовував би "реальне" ім'я, а не додатковий метод. Не велика справа, але щось необхідно знати.

2
додано

Коли ви пишете:

has_many :category_items

Рейки автоматично знають шукати модель CategoryItem. Але ви можете роз'єднати ім'я асоціації та клас, на який він вказує

has_many :items, :class_name => "CategoryItem" 
1
додано