如何检查rails中的关系值?

时间:2016-03-14 21:59:21

标签: ruby-on-rails ruby neo4j

在rails上写ruby并使用neo4j数据库。

帖子和用户是两个班级。 Flag是User与Post之间的关系。

flag的默认值为false。如果有人在帖子上放了一面旗帜。标志值将变为true。

旗级:

class Flag
 include Neo4j::ActiveRel
 include Neo4j::Timestamps

 from_class :User
 to_class :Post
 type :FLAG_POST

 property :flag, type: Boolean

 validates_presence_of :flag
end

后置控制器中的标记操作:

def flag
  flag = Flag.new(from_node: current_user, to_node: @post, flag: true)

  respond_to do |format|
   if flag.save
     format.js { render :index }
   else
     format.js { redirect_to post_path, notice: 'Error putting flag on post.'}
   end
  end
end

查看:

<%= button_to "flag", flag_post_path(post), class: 'btn btn-default', method: :put, data: { confirm: 'Are you sure to flag this post?' }, remote: true %>

另外,我想在放置标志时添加警报。如果帖子已经放置了标志,则网络将提醒用户“帖子已被放置标志”。如何检查标志值是true还是false?我检查了neo4j图,并建立了关系。但我不知道标志值是否改变了。

我刚开始学习rails和neo4j。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用flag.valid?检查对象是否有效保存。

答案 1 :(得分:0)

您可以使用jquery在click上切换值并传递更改的值。或者你可以简单地改变每次的值。类似的东西:

$('.js-flag').on('click', function(e){ 
  // you'll need to add that js-flag class to your flag
  e.preventDefault();

  $.ajax({
     type: 'GET',
     url: '/posts/flag', // create this route if doesn't exist
     data: {
       // whatever data you want to pass
       // need to pass the post_id at a minimum
     }
  }).done(function(ajax_response){
     console.log('success!');
  })
})

确保您在routes.rb文件中有标记路径。

在控制器内部更改标志的值。