Ruby on rails 在rails中,拥有多个项目和一个特殊项目的最佳实践是什么
在rails应用程序中,我有以下设置: 项目有很多页面。 页面属于某个项目 使用“项目”控制器上的嵌套属性创建和编辑页面 在可能的情况下,所有编辑都使用最佳位置进行 现在我想为每个项目添加一个默认页面的功能。经过长时间的尝试,我想出了将startpage_id添加到项目中并添加Ruby on rails 在rails中,拥有多个项目和一个特殊项目的最佳实践是什么,ruby-on-rails,design-patterns,activerecord,Ruby On Rails,Design Patterns,Activerecord,在rails应用程序中,我有以下设置: 项目有很多页面。 页面属于某个项目 使用“项目”控制器上的嵌套属性创建和编辑页面 在可能的情况下,所有编辑都使用最佳位置进行 现在我想为每个项目添加一个默认页面的功能。经过长时间的尝试,我想出了将startpage_id添加到项目中并添加 belongs_to :startpage, class_name: "Page" 对于项目模型,因为有一个不可行。这似乎不直观,我觉得我做错了什么 在这种情况下,最佳做法是什么 将startpage\u id
belongs_to :startpage, class_name: "Page"
对于项目模型,因为有一个不可行。这似乎不直观,我觉得我做错了什么
在这种情况下,最佳做法是什么
startpage\u id
字段添加到您的项目
模型中
class AddStartpageFlagToPage < ActiveRecord::Migration
def change
add_column :projects, :startpage_id, :integer
end
end
我会在
页面
中添加一个布尔字段,默认值为false
:
class AddStartpageFlagToPage < ActiveRecord::Migration
def change
add_column :pages, :startpage, :boolean, default: false
end
end
class AddStartpageFlagToPage
并添加查找起始页的方法:
class Project < ActiveRecord::Base
belongs_to :pages
def startpage
pages.find_by(startpage: true)
end
end
class项目
您可能需要添加验证,以确保每个项目只有一个起始页。您认为这是不直观的,这是正确的。为什么您的
有一个关系不能与开始页面一起工作?
class Project < ActiveRecord::Base
belongs_to :pages
def startpage
pages.find_by(startpage: true)
end
end