在一个玩具Rails应用程序中,我正在模拟一种情况,即您有多个盆,每个盆都包含一定数量的盆,您可以在盆之间进行事务处理。一笔交易可以从到任何一个罐子,然后去到任何一个罐子。双关联模型的嵌套路由
下面是该机型的相关部分:
class Pot < ActiveRecord::Base
has_many :to_transactions, :foreign_key => "to_id", :class_name => "Transaction"
has_many :from_transactions, :foreign_key => "from_id", :class_name => "Transaction"
end
class Transaction < ActiveRecord::Base
belongs_to :to_pot, :class_name => "Pot", :foreign_key => "to_id"
belongs_to :from_pot, :class_name => "Pot", :foreign_key => "from_id"
end
这让我做在控制台上执行以下操作:
>> p = Pot.find(123)
>> p.from_transactions
=> # returns array of transactions from pot 123
>> t = p.to_transactions.new
=> # t is a new transaction with to_id set to 123
等。
我在设置路由时遇到问题。例如,我想:
/pots/123/from_transactions
从锅123给所有交易的列表,/pots/123/to_transactions/new
给新的交易形式,与to_id
为123
这是可能?任何帮助感谢收到等等等
虽然这会工作,我不喜欢有两个控制器会做几乎相同的事情的想法。我找到了更好的解决方案(请参阅我的答案) – grifaton