Няўдалы прыклад паўторна назва мадэлі асацыяцыі ў вашай мадэлі?

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

Rails автомагіческі ведае шукаць мадэлі CategoryItem. Але вы можаце аддзяліць імя асацыяцыі і клас ён паказвае

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