将“current_user”添加到模型中。 (设计)Rails

时间:2014-10-14 01:45:30

标签: ruby-on-rails model devise

嗨,我是新来的,也是新的。

我想默认将几个值添加到名为books(Model:Book.erb)的数据库中 有一个用户创建这些书籍(current_user),我认为识别谁创建和删除此内容的方法是通过添加用户的一些默认值并对其进行证明(作为特定的用户名和密码)

我的桌子":书籍"有两个用于添加用户名和密码的字段

我试着这样做:

# Book.erb
class Book < ActiveRecord::Base
    after_save :set_default_values
    def set_default_values
        self.username = current_user.username
        self.password = current_user.encrypted_password
    end
end

但似乎我无法拨打&#39; current_user&#39;从这个模型。

我在this blog

上阅读了一个实践

但有些人说这种方法违反了MVC模式,你同意吗? 你们知道一个更好的方法来做这个过程而不违反模式吗?

1 个答案:

答案 0 :(得分:1)

好吧,我不确定我是否可以设想你为什么要在书籍表中存储用户名和用户密码,因为即使很容易解释,这也违反了良好数据库的规范化做法几乎说明你应该只表达一次字段然后在需要共享的地方分享它的设计。

现在,假设你出于某种原因必须这样做我无法想象,我不得不问“用户名”是你的实际字段还是只是“名称”,这是更标准的Rails。并且,我相信你必须在这些模型之间建立关系,以便将数据从一个模型拉到另一个模型中,并且我没有看到该书有多个用户或者一个或者属于任何类型的东西。

通过书籍和用户之间的关系,您可以访问所有用户属性,而无需将其写入除用户表之外的任何位置。所以我想你可能想看一下。