ここで説明されているように、2 つのノード間に関係を作成しようとしています
https://github.com/neo4jrb/neo4j/wiki/Neo4j-v3-Declared-Relationships
from_node.create_rel("FRIENDS", to_node)
未定義のメソッドを取得していますcreate_rel
私は何を間違っていますか?別のモデル内に Q+A システムを作成しようとしています。したがって、質問と回答の両方が現在モデルとして扱われます。
undefined method
# の create_rel
を取得しています
event.rb
has_many :out, :event_questions
event_questions.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 this 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
後でイベントに関するすべての質問をリストしたかったので、新しい質問をイベントのインデックス ページ内に置いています。new
コントローラーにメソッドさえ必要ありませんよね?また、質問フォームが置かれているイベントを取得する方法もよくわかりません。それはparamsからアクセスできますか?
アップデート
これのことですか
def create_questions_of(to_node)
self.create_rel("questions_of", to_node)
end
と
@event_question.create_questions_of(@event)
したがって、ルートも変更し、内部に質問をネストして作成する必要があると思います
events/123/questions/
それから私はつかんevents_id
で使うことができますfind
更新 #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_questions.rb
has_one :in, :events, origin: :event_questions
イベント/show.html.erb
<%= form_for [:event, @event_question] do |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
ルート.rb
resources :events do
resources :event_questions, only: [:create, :destroy]
end