Rails Cookie来操作数据库条目

时间:2016-09-06 14:51:08

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

我正在尝试创建一个Rails应用程序,我有一个由作者和作者引用组成的数据库。

现在,不同的用户可以选择销毁或终止来自数据库的报价,但是只能为该特定用户删除报价,即其他用户仍应该能够看到即使其他用户也没有删除的报价。

我知道我需要实施cookie,但除此之外我不确定如何继续。谁能指点我一个教程或者给我一些指导来开始这个复杂的任务?

1 个答案:

答案 0 :(得分:0)

你的应用程序肯定有一个User模型 - 一个类似Rails的模型'这样做的方法是在UserQuotation之间添加has_and_belongs_to_many关系。

这会在每个用户和他们的用户之间创建一种关系。报价。可以在不实际删除报价的情况下删除此关系,因此所有报价仍可供其他用户使用。如果您希望每个用户都能够默认查看所有报价,则需要提前设置关系。

假设您使用Devise来记录您的用户,那么您需要做的就是用Quotation.all替换current_user.quotations,无论您使用哪个控制器来显示报价。

上面链接的Rails指南非常有用,但基本上你只需要添加如下内容:

class User
  has_and_belongs_to_many :quotations

  before_create :add_quotations

  def add_quotations
    self.quotations << Quotation.all
  end
  #etc...
end

class Quotation
  has_and_belongs_to_many :users
  #etc...
end

然后运行迁移,添加一个名为users_quotations的新表,其中包含user_idquotation_id列。

修改

正如@Yule所指出的,这不会让用户看到它们之后创建的任何引用,并且必须提前设置连接表会非常烦人,所以更有效的方法是改为使用excluded_quotations联接表。因此,用户可以查看除已排除的所有报价之外的所有报价。