Ruby on rails 如何将编辑限制到在RubyonRails中创建文章的特定用户?

Ruby on rails 如何将编辑限制到在RubyonRails中创建文章的特定用户?,ruby-on-rails,ruby,edit,settings,Ruby On Rails,Ruby,Edit,Settings,我已经使用ruby创建了一个消息发布功能。我现在的问题是,编辑帖子的功能是可用的,但无论是谁发布了原始帖子,任何单个用户都可以访问该功能。如何使编辑“链接”仅可由原始海报查看、访问或使用。如果需要任何代码,请询问,谢谢 这就是我现在遇到的错误: undefined local variable or method `current_user' for #<ActionView::Base:0x4cdbb48> Extracted source (around line #7): 4

我已经使用ruby创建了一个消息发布功能。我现在的问题是,编辑帖子的功能是可用的,但无论是谁发布了原始帖子,任何单个用户都可以访问该功能。如何使编辑“链接”仅可由原始海报查看、访问或使用。如果需要任何代码,请询问,谢谢

这就是我现在遇到的错误:

undefined local variable or method `current_user' for #<ActionView::Base:0x4cdbb48>
Extracted source (around line #7):

4:     <dd>
5:     <%= car.name %><br />
6:     <%= car.description %><br />
7:     <%= link_to('edit', edit_post_path(@car)) if current_user.cars.include?(@car) %>
8:     <%= link_to "Delete", 
9:     :controller => :car, 
10:    :action => :delete,
未定义的局部变量或方法“当前用户”#
提取的源(第7行附近):
4:     
5:
6:
7: 汽车, 10::action=>:删除,
您需要将帖子链接到模型中的创建用户,并在编辑操作中检查所有权和/或权限

使用gem来处理许可可能是一件好事,并且考虑使用它来做一个与您的需要非常相似的保护


railscast与authlogic一起使用cancan,但它也可以与其他身份验证一起使用。

如果您有一种获取用户对象的方法,您应该与您的帖子有如下关系:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end
def current_user
  @current_user ||= User.find(whatever_you_do_to_get_the_logged_in_user)
end
def edit
  @post = current_user.posts.detect{|p| p.id == params[:id] }
end
将“在编辑和更新中查找”操作的范围限定为用户拥有的帖子,如下所示:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end
def current_user
  @current_user ||= User.find(whatever_you_do_to_get_the_logged_in_user)
end
def edit
  @post = current_user.posts.detect{|p| p.id == params[:id] }
end
在你看来:

<%= link_to('edit', edit_post_path(@post)) if current_user.posts.include?(@post) %>


我不能使用外部rails加载项等来创建此在线应用程序,它必须在没有加载项的标准rails上运行。请查看代码,理解它,并将其作为自己如何操作的模型。我现在将尝试一下,看看会发生什么@unixmonkey p和p.id是什么?我的帖子也被称为“车”,我不需要为每个发布的“车”定义用户id吗@unixmonkeyI已经添加了代码行等,我是否应该将p.id更改为car.id,因为我将其作为每个帖子的id,以及如何在我的car\u controller.rb中定义变量current\u user?请查看我现在在OPp中得到的错误是一个临时变量,用于检查每个帖子。当传递给select的块计算为true时,@post将是与params[:id]具有相同id的post。如果您使用restful\u身份验证、authlogic或Desive,则当前用户是经过身份验证的rails应用程序中的一种事实上的标准。还假定用户与帖子之间存在关系。编辑一点以进行扩展。