ruby on rails - Neo4J Gem - Saving undeclared relationships -


i trying create realtionship between 2 nodes described here https://github.com/neo4jrb/neo4j/wiki/neo4j-v3-declared-relationships from_node.create_rel("friends", to_node)

i getting undefined method create_rel

what doing wrong? trying create q+a system inside model. both questions , answers treated models right now.

i'm getting undefined methodcreate_rel' #

event.rb

  has_many :out, :event_questions 

event_question.rb

  has_one :in, :events   has_many :out, :event_answers    def create_questions_of(from_node,to_node)     from_node.create_rel("questions_of", to_node)   end 

event_answer.rb

  has_one :in, :event_questions 

event_questions_controller.rb

def new     #is needed end  def create     @event_question = eventquestion.new(event_question_params)     if @event_question.save         @event = event.find(params[:id])         @event_question.update(admin: current_user.facebook_id)         @event_question.create_questions_of(self,@event)         redirect_to @event     else         redirect_to @event     end end  private      def event_question_params         params.require(:event_question).permit(:question)     end 

i have new question sitting inside event's index page since wanted list questions on event after. don't need new method in controller right? don't know how obtain event question form sitting on. accessible through params?

update

did mean this

  def create_questions_of(to_node)     self.create_rel("questions_of", to_node)   end 

and

 @event_question.create_questions_of(@event) 

so think need change routes , nest questions inside create events/123/questions/

then can grab events_id , use find

update #2

events_controller.rb

def show     @event = event.find(params[:id])     @event_question = eventquestion.new end 

event.rb

  has_many :out, :event_questions, type: 'questions_of' 

event_question.rb

  has_one :in, :events, origin: :event_questions 

events/show.html.erb

<%= form_for [:event, @event_question] |f| %>  #form stuff  <% end %> 

event_questions_controller.rb

def create     @event_question = eventquestion.new(event_question_params)     if @event_question.save         @event = event.find(params[:event_id])         @event_question.update(admin: current_user.facebook_id)         @event_question.events << @event         redirect_to @event     else         redirect_to :back     end end 

routes.rb

resources :events     resources :event_questions, only: [:create, :destroy]   end 

create_rel worked fine when tested now. saying undefined method 'create_rel' nil:nilclass? if so, means from_node variable doesn't have node set. make sure objects think are.

the better question here: why want this? when create undeclared relationship, have write own cypher queries whenever want use it. if it's part of code , using regularly, should have has_many associations in models. create_rel exists provide interoperability nodes don't have models.

as other question, don't need new action unless there's route , view corresponds it. if you're loading form new question on index page, that's fine. if url http://127.0.0.1:3000/events/123/questions/, can event id in params[:event_id]. run rake routes command project's directory , it'll spit out lots of information includes parameter names.

finally, when use self in @event_question.create_questions_of(self,@event), you're going controller. if want refer @event_question, remove first argument create_questions_of , use self within method.

edit: part 2

you're getting undefined method because self in @event_question.create_questions_of(self,@event) controller. you're trying send @event_question itself, think. don't that, call self within create_questions_of , you'll current eventquestion.

you use activerel if want callbacks, validations, properties, etc,... if want simple relationships, setup has_many associations in each model, omit rel_class, , either set them both same type or set origin on one.

class event   include neo4j::activenode   has_many :in, :event_questions, type: 'questions_of' end  class eventquestion   include neo4j::activenode   has_many :out, :events, origin: :event_questions end 

origin says, "look association in reciprocal model , use type defines." lets not have worry synchronizing type between associations.

after that, can @event_question.events << @event , it'll create new relationship you.


Comments

Popular posts from this blog

c++ - QTextObjectInterface with Qml TextEdit (QQuickTextEdit) -

javascript - angular ng-required radio button not toggling required off in firefox 33, OK in chrome -

xcode - Swift Playground - Files are not readable -