ruby on rails - Has_many through association not working -
in node
model have association below, 2 nodes
linked in link
model:
has_many :first_links, class_name: "link", foreign_key: "first_node_id" has_many :second_links, class_name: "link", foreign_key: "second_node_id" belongs_to :organization
i want have links associated node, irrespective whether node first_node
or second_node
. therefore have method below in node
model:
def links first_links + second_links end
if try node.first.links
in console, works , list of links node, irrespective if node first or second node of link. relationship seems working.
in organization
model have:
has_many :nodes has_many :links, through: :nodes, source: :links
however, organization.first.links
in console generates error:
could not find source association(s) "link" or :links in model node.
what doing wrong through
association?
update: understand need custom method collect links
organization
. following made sense me (added organization
model):
has_many :nodes def links nodes.each |node| self.links ||= [] #create array if doesn't exist yet. links << node.links.collect #add links array. end end
if try organization.first.links
in console, produces error below. idea method should like?
/usr/local/rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:282:in `blame_file!': can't modify frozen fatal (runtimeerror)
hmmm..
you can call organization.nodes
, not organization.links
, since method in node
class.
what can try, however, create similar method (which instance method) in organization
class, return links nodes belonging instance of organization
on newly created method called.
eg:
def links self.nodes.joins(:first_links) + self.nodes.joins(:second_links) end
Comments
Post a Comment