一个帖子属于一个用户,一个用户有_许多帖子。
一个帖子也属于一个主题,一个主题有_许多帖子。
class User < ActiveRecord::Base
has_many :posts
end
class Topic < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :topic
end
嗯,这很简单,也很容易设置,但是当我显示一个主题时,我不仅想要该主题的所有帖子,还想要发布该帖子的用户的 user_name 和 user_photo。但是,这些属性存储在 User 模型中,并且与 Topic 无关。那么我该如何设置呢?
也许它已经可以调用了,因为 Post 模型有两个外键,一个用于用户,一个用于主题?
或者,也许这是某种通过关联的“单向”has_many。就像 Post 是 join 模型,Topic 是 has_many :users, :through => :posts。但这反过来是不正确的。就像用户没有 has_many :topics。
那么这甚至需要 has_many :though 关联吗?我想我只是对控制器将帖子和该帖子的用户都称为给定主题的外观有点困惑。
编辑:说真的,感谢所有参与的人。我选择 tal 的答案是因为我将他的代码用于我的控制器;但是,我可以很容易地选择 j.'s 或 tim's。也谢谢你们俩。这实现起来非常简单。我想今天可能标志着我对 Rails 的热爱的开始。