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
努力简化具有Objects
Items
的界面
我有没有看到这个缺点? 或更好的方式来实现这一目标?
category = Category.first
category.items
# instead of
# category.category_items
transaction = Transaction.first
transaction.items
# instead of
# transaction.transaction_items
答案 0 :(得分:2)
另一种方法是指定类(参见has_many
options docs):
has_many :items, :class_name => "CategoryItem"
但是,我认为你没有遇到任何重大问题。
唯一需要注意的是反复处理关联的任何事情(例如,文档工具)将使用“真实”名称,而不是其他方法。没什么大不了的,但需要注意的事情。
答案 1 :(得分:1)
当你写:
has_many :category_items
Rails自动知道查找Category Item模型。但是你可以自由地将关联名称和它指向的类分开
has_many :items, :class_name => "CategoryItem"