更新
可以吗?
Student
has_many: hosts
has_many: posts through :students
Post
belongs_to :host
belongs_to :student
Host
has_many posts
has_many students through posts
=
===========我正在一个平台上工作,学生可以创建一个帐户并发布与他们一起生活的寄宿家庭的评论。
目前我有三个模型
学生模型、主机模型和帖子模型
我希望视图最终具有此显示的信息
房东联系(来自房东模型),房东电话等(房东模特),在描述框中对此特定主机的评论(帖子)并由学生发布
这是我学生的一部分。
has_many :posts
has_many :hostfamilies
这是我的帖子的一部分.rb
belongs_to :student
belongs_to :host
这是我的主机的一部分.rb
belongs_to :student
has_many :posts
我有两个测试页面,其中包含一些虚假数据
我的索引.html.erb在学生控制器下目前看起来像这样
发表者: <%= @student.first_name%> <%=@student.last_name %>
<br>
评论:
<br>
<% @student.posts.each do |post| %>
Post <%= post.id %>
Message: <%= post.message %>
<br>
发表時間: <%= post.created_at %>
<% end %>
我的索引.html.erb在主机控制器下看起来像这样
房東: <%= @host.contact_person %><br>
房東號碼: <%= @host.contact_number %><br>
最近的巴士: <%= @host.nearest_bus %><br>
最近的火車站: <%= @host.nearest_transit %><br>
每月房租: <%= @host.cost %>
到目前为止,它们都正常工作。
首先,我觉得我可以使用比belongs_to和has_many更好的表关联关系,因为这两者对我来说相对容易且非常简单。有没有更好的方法/更干净的方法来连接这 3 张桌子?我只是对如何连接这三张桌子有点困惑。我同时构建和学习轨道,所以我几乎没有优化表关联的经验。
如果一个学生有很多主持人,而一个主持人有很多帖子,你可以尝试一个has_many:通过关系。 所以你会这样做
学生.rb
has_many :p osts, 通过 :hosts
查看导轨指南了解更多信息http://edgeguides.rubyonrails.org/association_basics.html#the-has-many-through-association
学生.rb
has_many :hosts
has_many :posts, through: hosts
主机.rb
belongs_to :student
has_many :posts
后.rb
belongs_to :student
belongs_to :host
通过这种方式,您可以获取属于特定主机的帖子,学生发布的所有帖子以及学生发布的有关主持人的所有帖子。