Tag: 有许多通过

模拟has_and_belongs_to_many嵌套在Rails 3中的行为

所以Rails不支持:通过关系进行关联。 有插件可以为Rails 2.x添加它,但我使用的是Rails 3 / Edge,只需要一个特定模型的关联。 所以我以为我会用Arel的美丽把自己弄得一团糟。 一,型号: class CardSet true end class Card true has_many :learnings, :dependent => :destroy end class Learning < ActiveRecord::Base belongs_to :card end 我希望获得属于特定卡片组的所有学习内容:through => cards。 这是我目前在CardSet模型中所拥有的: def learnings c = Table(Card.table_name) l = Table(Learning.table_name) j = Table(self.class.send(:join_table_name, Card.table_name, CardSet.table_name)) learning_sql = l.where(l[:card_id].eq(c[:id])).where(c[:id].eq(j[:card_id])).join(j).on(j[:card_set_id].eq(self.id)).to_sql Learning.find_by_sql(learning_sql) end 这给了我(该死的,Arel很漂亮!): SELECT `learnings`.`id`, `learnings`.`card_id`, `learnings`.`user_id`, […]