在这个应用程序中,我有一个父子树。模型(带有一些数据)如下所示:
Subjects
Subject_id Subject_name Parent_id
1 Plants 0
2 Animals 0
3 Bacteria 0
4 Tree 1
5 Grass 1
6 Dog 2
7 Pine 4
这种关系看起来像这样:
class Subject < ActiveRecord::Base
belongs_to :parent, class_name: "Subject"
has_many :children, class_name: "Subject", foreign_key: "parent_id"
end
我想通过parent_id 0获取父母。我该怎么做?
我知道一个解决方案是创建一个root父级,然后用.children调用它来让root父母得到孩子,但那不是我想要做的。
答案 0 :(得分:1)
以前的评论
Subject.where( :parent_id => 0 )
答案 1 :(得分:0)
首先获取活动记录时,以大写字母开头。 其次,使其成为单数。
subjects.find_by
应该是
Subject.find_by
第三,数据库中命名表字段的用户小写,如。
Parent_id >> parent_id
接下来, has_many 关系应该在父模型
中这样说:
家长模式:
has_many :subjects
主题模型:
belongs_to :parent
从主题控制器获取父级。
@subject = Subject.all
在视图中,你必须像下面那样迭代它:
<% @subject.each do |sub| %>
<%= sub.parent.title %> //title field for ex.
<% end %>
但是如果你想获得一个主题及其父数据,你可以这样做:
@subject = Subject.first
@subject.parent.title //example field from Parent Table