Hello Experts,
I have a tree of categories in this category object there is a property
called type.
the root categories have no type but the children have. so how I can get
all the roots with filled in children that have category type = 'B' for
instance.
I tried to run Category.roots then delete children With a category not
equal to 'B' but this causes a major performance problems.
has_many :children, class_name: name,
foreign_key: configuration[:foreign_key],
order: configuration[:order],
dependent: configuration[:dependent],
inverse_of: :parent
If you do: root.children.where(:type => yourtype) it should just work.
[https://github.com/amerine/acts_as_tree/blob/master/lib/acts_as_tree.rb#L7](https://github.com/amerine/acts_as_tree/blob/master/lib/acts_as_tree.rb#L89)8
Not answering the question but I would avoid using a field named
'type'. Rails expect this to be used with STI and may become confused
if it used as a normal field.
Hello,
It didn't work i want to bring all roots that a children have one type
not only one root.
something like
@categories = Category.roots
but with children condition category_type => '2'
My nested set is called 'Library' and I only wanted users to see
libraries that were either created for their company or not assigned
to any company (ie. library.company_id == user.company_id or
library.company_id == nil).
I created this user method:
def libraries
libraries = Library.arel_table
Library.where(libraries[:company_id].eq(nil).or(libraries[:company_id].eq(self.company_id)))
end
And call it from the controller using:
@libraries = current_user.libraries.order('lft ASC')
In the view, I create a table and then use the jquery.treeTable.js to
created a widget that allows for easy navigation of the tree/sets.
Hello,
thanks for your advice, however i wanted all the roots chould parent
should be always nil, but in the same time I want the children for this
roots to be filtered only with a specific type.
root1-
child1 type A
child2 type B
root2
child3 type A
Child4 type B
when i apply the filter on type A the result should be as follows: