我正在尝试创建一个Rails应用程序,我有一个由作者和作者引用组成的数据库。
现在,不同的用户可以选择销毁或终止来自数据库的报价,但是只能为该特定用户删除报价,即其他用户仍应该能够看到即使其他用户也没有删除的报价。
我知道我需要实施cookie,但除此之外我不确定如何继续。谁能指点我一个教程或者给我一些指导来开始这个复杂的任务?
答案 0 :(得分:0)
你的应用程序肯定有一个User
模型 - 一个类似Rails的模型'这样做的方法是在User
和Quotation
之间添加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_id
和quotation_id
列。
修改强>
正如@Yule所指出的,这不会让用户看到它们之后创建的任何引用,并且必须提前设置连接表会非常烦人,所以更有效的方法是改为使用excluded_quotations
联接表。因此,用户可以查看除已排除的所有报价之外的所有报价。