gpt4 book ai didi

ruby-on-rails - 如何命名模型\类?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:30 24 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.1.1,我想“(重新)命名”\“使用”命名空间 模型文件和相关类“a là Ruby on Rails Way”保持最新数据库表名。也就是说,我有以下文件系统:

- app/models/article.rb
- app/models/articles.rb
- app/models/articles/comment.rb
- app/models/articles/category.rb
- app/models/articles/...

相关数据库表名分别为:

# Note: Since the 'app/models/articles.rb' file is related to a module (read
# below for more information) it has not a related database table
- articles
- articles_comments
- articles_categories
- ...

app/models/articles.rb 文件中我有:

module Articles
def self.table_name_prefix
'articles_'
end
end

例如,在 app/models/articles/comment.rb 我有

class Articles::Comment < ActiveRecord::Base
...
end

这是“命名”\“使用”命名空间类的正确方法吗?


也许“正确”的方法是将命名空间命名为单数名称(例如:使用class Article::Comment ... end 而不是class Articles::Comment ... end) 并且为了组织文件,使用 /article/ 目录而不是 /articles/。在这种情况下,文件系统应该是:

# Note: the 'app/models/articles.rb', maybe, should not be present
- app/models/article.rb
- app/models/article/comment.rb
- app/models/article/category.rb
- app/models/article/...

如果是这样,它应该如何为 app/models/articles.rb 文件工作(在最后一个例子中不再出现)为了保持articles 的数据库表名前缀?

最佳答案

rails 的方法是不这样做。

您将仅使用命名空间模型和 Controller 来实现巨大的逻辑分离。例如,如果您有仅在管理期间适用的管理模型,您可能有:

app/admin/report.rb
app/admin/dashboard.rb

然后您将它们引用为 Admin::Report

但没有“Admin”对象——在您的示例中,您有一个“Article”对象……我不会以这种方式对您的文件进行分组……将它们全部保存在应用程序的全局命名空间中。

关于ruby-on-rails - 如何命名模型\类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com