我有一个看起来像这样的甲板模型:
class Deck < ActiveRecord::Base
has_many :cards
def cards
["ace"] + Cards.where(:deck_id => self.id)
end
end
我通过重新定义卡访问器丢失了关联方法。例如,我做不到:
@deck = Deck.new
@cards = d.cards.build
如何恢复关联方法?
如果我能够在不知道我事先做过什么的情况下访问原始的cards
方法,那将是很好的。我认为最后一个警告排除了alias_method_chain
作为解决方案。
答案 0 :(得分:0)
正如在注释中提出的那样,你不应该覆盖Rails生成的方法,因为它的返回不是简单数组 - 它返回Relation
实例。对于所有默认关联,使用将在创建对象之前执行的before_create
。
class Deck&lt;的ActiveRecord :: Base的
has_many:卡片
before_create:add_default_cards
private:
def add_default_cards
cards.create! :name => 'ace'
end
end