我是新来的铁轨,并试图准确理解如何做关联,如果我做得正确。我已阅读rails guide on associations并搜索了网络并找到了一些资源,但我不确定。简单轨道3协会 - has_many,belongs_to和has_and_belongs_to_many
你可以在这里看到我的项目:majorfinder.com在我的应用程序将有专业,学校和职业。我希望能够为每个评论添加评论。由于我刚刚开始,我刚刚开始为专业添加评论。
这里是我的协会:
型号/ review.rb
belongs_to :user
has_and_belongs_to_many :majors
型号/ user.rb
has_many :reviews
型号/ major.rb
has_and_belongs_to_many :reviews
我第一个问题是,这是否看起来像创建协会的好方法?
我知道该怎么做在大满贯赛控制器简单的关联关系:
@reviews = Review.includes(:user)
,并与我可以告诉检讨我的主要控制器:
<div class="row">
<% @reviews.each do |review| %>
<div>
<h3><%= link_to review.review,
:controller => "reviews", :action => "show", :id => review.id %></h3>
<small>Posted on <%= review.created_at %> by
<a href="#"><%= review.user.profile_name %></a></small>
</div>
<% end %>
</div>
,但我不知道怎么样使这个连接到我正在看的特定专业。
我的评论数据库模式有review(text),user_id(integer)和major_id(integer)。
最后一个问题是,如何在主要控制器显示页面内发布与该特定主要连接的评论?
非常感谢你Zaid!这非常有帮助!我遇到了一个错误:在MajorsController中的NoMethodError#显示未定义的方法'包括'为#,在我的majors_controller.rb文件中,虽然我有:def show @major = Major.find_by_slug(params [:id])。包括(:reviews =>:user)end –
lflores
2013-03-05 13:57:48
这是我的错,'.includes()'应该放在'.find()'之前,所以'@major = Major.includes(:reviews =>:user) .find_by_slug(params [:id])'应该工作。 – 2013-03-05 22:07:13
它呢,谢谢你! – lflores 2013-03-07 02:10:09